我为客户提供了一个symfony表单,其中包含只有管理员才能编辑的字段。但是客户端也可以编辑一些字段。但是,我没有使用相同的表单,而是使用了只为客户提供字段的表单。
// ClientType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, ['required' => true])
->add('link', UrlType::class, ['required' => false])
...
以此类推。根据要求,我必须创建一个单独的表单,其中包含客户的其他字段以及上面表单中来自其自己实体的某些字段。
// CustomClientType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('someField', TextType::class, ['required' => true])
->add('client', ClientType::class)
...
在我的树枝上。
...
{{ form_widget(form.client.link) }}
...
{{ form_end(form, {'render_rest': false}) }}
所以不要渲染不需要的字段。 CustomClientType具有自己的实体。提交自定义表单时,嵌入表单的必填字段出现错误。所以问题是,如何在不更改客户端实体的情况下忽略嵌入表单中的未呈现字段?实体中仅应更新嵌入表单的呈现字段。
使用Symfony 2.8,并计划在今年晚些时候更新到3.4。