设置所有Symfony表单类型的默认值

时间:2017-10-16 14:30:19

标签: symfony default symfony-forms

是否可以为所有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或类似的东西)?

1 个答案:

答案 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}}标签属性以确保它。