javascript的序列化表单

时间:2016-06-14 07:53:11

标签: javascript serialization symfony-forms symfony

我需要完全使用Javascript来管理复杂的表单。

我不想将整个表单HTML标记提供给用户。

这就是为什么我需要序列化表单以便我可以使用JS操作它,同时用户在提交回服务器之前摆弄一些HTML交互。

我看到了this pretty old question"deprecated" bundle

问题很简单:如何序列化Symfony表单的基础数据

这是我在相关对象上实施JsonSerializable之后的第一次尝试:

{% form.vars.data|json_encode %}

但显然这会对整个对象公开属性进行编码

1 个答案:

答案 0 :(得分:0)

由于我们可以使用标准的Symfony工具轻松地反序列化提交的表单,我认为可以使用相同格式的序列化工具。那似乎并非如此。

我们似乎必须实现自己的序列化程序,它的外观如下:

static public function serializeForm(FormInterface $form)
{
    if (!$form->all()) {
        return $form->getViewData();
    }
    $data = array();
    foreach ($form->all() as $child) {
        $data[$child->getName()] = self::serializeForm($child);
    }

    return $data;
}

我从所谓的“已弃用”SimpleThingsSerializerBundleform serializer

中选择了有趣的部分。