Symfony2使用序列化程序反序列化以使用DateTime创建原则实体

时间:2015-03-30 14:20:47

标签: json symfony datetime serialization doctrine

我有一个包含DateTime字段的学说实体。 当我序列化表单使用的对象时,我使用这个回调函数(取自symfony documentation)转换datetime对象:

$callback = function ($dateTime) {
    return $dateTime instanceof \DateTime
        ? $dateTime->format(\DateTime::ISO8601)
        : '';

此函数附加到规范化器。

使用dd/MM/yyyy图片将日期进一步转换为字符串,并将其作为字符串放置到表单中(我使用的是JavaScript日期选择器)。

使用ajax将表单发布到控制器,该控制器将实体作为PHP数组。

现在我需要将数组(包含日期作为字符串)转换回我的Doctrine实体。

有没有办法将数组反序列化为实体? 我尝试deserialize(json_encode($array)),但我在DateTime转换时遇到错误。

任何提示?

1 个答案:

答案 0 :(得分:0)

我认为最常用的方法是使用Symfony2 DateTime FormType

看起来像那样:

        $builder->add(
            'date',
            'datetime',
            array(
                'widget'   => 'single_text',
                'format' => 'dd/MM/yyyy'
            )
        );

如果您不喜欢使用表单组件,我不知道将数组映射到实体的简单方法。