为所有Symfony表单类型设置默认值
是否可以为所有Symfony表单类型设置默认值?为所有Symfony表单类型设置默认值
我们目前正在基于Symfony(3.3)开发API后端。在前端,我们有我们的实体作为对象看起来像:{"id": 1, "username": "foo" ..... }
如果我们想更新实体,我们JSON.stringfy对象,并将其发送到服务器。
但是,如果我们通过$form->submit($request)
绑定请求到我们的实体,我们得到一个错误(“这种形式不应包含额外的字段。”),因为我们没有(和不想使用!) “id”输出FormTypes。
所以我们必须设置allow_extra_fields
到true
在每一个FormType
public function setDefaultOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['allow_extra_fields' => true]);
}
是否有此配置为所有FormTypes默认的方式(不扩展的自定义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';
}
}
查看更多有关如何在Official documentation注册类型扩展名。
注:的allow_extra_fields
选项在FormTypeValidatorExtension
定义,所以请确保您的自定义类型的扩展名被注册后,它覆盖缺省值,否则使用priority
标签属性,以确保它。
thx,那正是我一直在寻找的! – F*
你是如何在实体中定义id属性的? (在其注释中)。 –