Fab*_*ian 2 default symfony-forms symfony
是否可以为所有Symfony FormType设置默认值?
我们目前正在开发基于Symfony(3.3)的API后端。在前端,我们将实体作为对象,如下所示:{"id": 1, "username": "foo" ..... }
如果我们想更新实体,我们将对象JSON.stringfy并将其发送到服务器。
但是,如果我们通过将请求绑定到我们的实体,$form->submit($request)
则会收到错误消息(“此表单不应包含额外的字段。”),因为我们在FormTypes中没有(也不想使用!)“ id”。
所以我们必须在每个FormType中都设置allow_extra_fields为true
public function setDefaultOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['allow_extra_fields' => true]);
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以将其配置为所有FormType的默认值(而无需扩展自定义FormType或类似的东西)?
您可以创建一个表单类型扩展名,以将true所有表单类型的默认值更改为。
表单类型扩展功能非常强大:它们使您可以在整个系统中修改任何现有的表单字段类型。
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';
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅官方文档中有关如何注册类型扩展的更多信息。
注意:该allow_extra_fields选项在中定义FormTypeValidatorExtension,因此请确保在注册您的自定义类型扩展名后,它会覆盖默认值,否则,请使用prioritytag属性来确保它。
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |