【发布时间】:2013-03-04 05:45:12
【问题描述】:
在我的系统中,数据库时间戳记录为 UTC 值。
每个用户的个人资料中都记录了一个时区。登录时,时区值会从他们的个人资料转移到他们的会话( $session->set('timezone', $tz); )。
我的大部分代码都使用 Sonata INTL 包,因此用户可以看到正确显示其时区的日期时间值,除了在表单字段中。
我最近在一些 Symfony2 类型上发现了 model_timezone 和 view_timezone 字段。我可以使字段显示正确的值(如下面的代码 sn-ps 所示),但是我想了解如何从用户会话中填充 view_timezone? (我猜我可以通过某种方式传入 $options?)
事件控制器sn-p:
$object = <object loaded>;
$form = $this->createForm(new MyEventType(), $object);
MyEventType 表单 sn-p:
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',
));
【问题讨论】:
-
还有什么问题?您可以将会话值添加到“view_timezone”选项
-
嗨哈斯特,我想问题应该这样表述:“如何将我的会话值放入表单中?”我有许多具有日期时间字段的表单。所以使用的方法应该很容易重复。