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