gpt4 book ai didi

Symfony2 在表单中使用时区渲染日期时间

转载 作者:行者123 更新时间:2023-12-05 01:10:11 25 4
gpt4 key购买 nike

在我的系统中,数据库时间戳记录为 UTC 值。

每个用户的个人资料中都记录了一个时区。登录时,时区值从他们的个人资料传输到他们的 session ( $session->set('timezone', $tz); )。

我的大部分代码都使用 Sonata INTL 包,因此用户可以看到针对他们的时区正确显示的日期时间值,除了 在表单字段中。

我最近发现了一些 Symfony2 类型的 model_timezone 和 view_timezone 字段。我可以让字段显示正确的值(如下面的代码片段所示),但是我想了解如何从用户 session 填充 view_timezone? (我猜我可以以某种方式传入 $options ?)

事件 Controller 片段:

$object = <object loaded>;

$form = $this->createForm(new MyEventType(), $object);

MyEventType 表单片段:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('id', null, array(
'label' => 'Event ID',
));

$builder->add('changed', 'datetime', array(
'date_widget' => 'single_text',
'date_format' => \IntlDateFormatter::SHORT,
'time_widget' => 'single_text',

'model_timezone' => 'UTC',
'view_timezone' => 'Pacific/Auckland',
));

最佳答案

这个问题的解决方法有两个:

  • 将一组选项传递给 createForm 方法,其中包含您的“view_timezone”值
  • 确保在表单默认选项中定义了“view_timezone”。

  • 我更新了我的代码片段以反射(reflect)所需的更改:

    事件 Controller 片段:
    $object = <object loaded>;

    $form = $this->createForm(new MyEventType(), $object, array(
    'view_timezone' => $this->container->get('session')->get('timezone'))
    );

    MyEventType 表单片段:
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
    $builder->add('id', null, array(
    'label' => 'Event ID',
    ));

    $builder->add('changed', 'datetime', array(
    'date_widget' => 'single_text',
    'date_format' => \IntlDateFormatter::SHORT,
    'time_widget' => 'single_text',

    'model_timezone' => 'UTC',
    'view_timezone' => $options['view_timezone'],
    ));

    ...

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
    $resolver->setDefaults(array(
    'data_class' => 'Stuff\CoreBundle\Entity\MyEvent',
    'view_timezone' => 'UTC',
    ));
    }

    关于Symfony2 在表单中使用时区渲染日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15195312/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com