在我的系统中,数据库时间戳记录为UTC值.
每个用户的个人资料中都记录了一个时区.登录时,时区值将从其配置文件传输到其会话($session-> set(‘timezone’,$tz);).
我的大多数代码都使用Sonata INTL包,因此用户可以看到正确显示其时区的日期时间值,表单字段除外.
我最近在一些Symfony2类型上发现了model_timezone和view_timezone字段.我可以让字段显示正确的值(如下面的代码片段所示),但是我想了解如何从用户会话中填充view_timezone? (我猜我可以通过某种方式传递$选项?)
事件控制器片段:
$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’.
我已更新我的代码段以反映所需的更改:
事件控制器片段:
$object = <object loaded>; $form = $this->createForm(new MyEventType(),$object,array( 'view_timezone' => $this->container->get('session')->get('timezone')) );
MyEventType表单片段:
public function buildForm(FormBuilderInterface $builder,'view_timezone' => $options['view_timezone'],)); ... public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Stuff\CoreBundle\Entity\MyEvent','view_timezone' => 'UTC',)); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。