是否可以为所有Symfony FormTypes设置默认值?
我们目前正在开发基于Symfony(3.3)的API后端。在前端,我们将实体作为对象看起来像:{"id": 1, "username": "foo" ..... }
如果我们想要更新实体,我们JSON.stringfy该对象并将其发送到服务器。
但是如果我们通过$form->submit($request)
将请求绑定到我们的实体
我们收到错误("此表单不应包含额外字段。" )因为我们没有(并且不想使用!)& #34; ID"在FormTypes中。
因此,我们必须在每个FormType
中将allow_extra_fields
设置为true
public function setDefaultOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['allow_extra_fields' => true]);
}
有没有办法将其配置为所有FormTypes的默认值(不扩展自定义FormType或类似的东西)?
答案 0 :(得分:5)
您可以创建表单类型扩展名,以便为所有表单类型将此默认值更改为clss.getIRI().getFragment()
。
表单类型扩展非常强大:它们允许您修改整个系统中的任何现有表单字段类型。
true
详细了解如何在Official documentation中注册类型扩展名。
注意: class MyFormTypeExtension extends AbstractTypeExtension
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'allow_extra_fields' => true,
));
}
public function getExtendedType()
{
return 'Symfony\Component\Form\Extension\Core\Type\FormType';
}
}
选项在allow_extra_fields
中定义,因此请确保在其后注册自定义类型扩展名以覆盖默认值,否则请使用{{ 1}}标签属性以确保它。