我正在为backbone.js应用程序开发一个symfony2后端。我有我的模型和形式。用额外的字段验证symfony2表格
但是,backbone.js在创建/更新模型时会向REST API发送一些其他属性,而我正努力使表单得到验证。
如何获取symfony2中的表单以接受其他数据,或者如何在将数据绑定到表单之前删除特定的键?
我正在为backbone.js应用程序开发一个symfony2后端。我有我的模型和形式。用额外的字段验证symfony2表格
但是,backbone.js在创建/更新模型时会向REST API发送一些其他属性,而我正努力使表单得到验证。
如何获取symfony2中的表单以接受其他数据,或者如何在将数据绑定到表单之前删除特定的键?
要获得Symfony2的接受额外的数据,添加附加字段到你的表单生成器,并设置其property_path
选项设置为false:
例子:
$builder
->add('my_additional_field', 'checkbox', array(
'mapped' => false,
));
你并不需要删除键在绑定数据之前,无论如何他们都会被忽略。
您可以侦听FormEvents::BIND_CLIENT_DATA
(或FormEvents::PRE_BIND
,如果您使用2.1 dev)事件侦听器并添加/删除字段。参见this食谱条目。
property_path现在已经过时,在SF 2.1,使用 “映射”,而不是
$builder
->add("firstName", "text")
->add("lastName", "text")
->add("tac", "checkbox", array(
"mapped" => false
)
);
您应该使用选项 “allow_extra_fields”。
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'allow_extra_fields' => true
)
);
}
+1> = 2.1的快速注释:“2.1版本中的新功能:自2.1版本以来,已为此用例添加了映射选项。” http://symfony.com/doc/2.1/reference/forms/types/hidden.html#mapped –
也许你应该考虑更新你的答案,增加什么版本是有效的。 – xPheRe
我不再做PHP了。如果可以,请更新我的答案。 –