我需要完全使用Javascript来管理复杂的表单。
我不想将整个表单HTML标记提供给用户。
这就是为什么我需要序列化表单以便我可以使用JS操作它,同时用户在提交回服务器之前摆弄一些HTML交互。
我看到了this pretty old question和"deprecated" bundle
问题很简单:如何序列化Symfony表单的基础数据?
这是我在相关对象上实施JsonSerializable
之后的第一次尝试:
{% form.vars.data|json_encode %}
但显然这会对整个对象公开属性进行编码
答案 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;
}
我从所谓的“已弃用”SimpleThingsSerializerBundle的form serializer
中选择了有趣的部分。