大佬教程收集整理的这篇文章主要介绍了php – Symfony 2表单错误“此表单不应包含额外字段.”提交表单时,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是原位形式:
<tr> <form method="post" action="{{ path('BACkend_course_row_update',{ 'courseEID' : course.id,'id' : row.id }) }}" novalidate> {{ form_widget(form.chAnnel) }} {{ form_widget(form.Name) }} {% for size in form.sizes %} {{ form_row(sizE) }} {% endfor %} {{ form_row(form._token) }} <td align="right" style="width: 140px;"> <button class="btn btn-priMary" type="submit"> <i class="glyphicon glyphicon-save"></i>Save </button> </td> </form> </tr>
这里的“表单”是一个CourseGuideRowType,如下所示:
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder,array $options) { $builder ->add('chAnnel','chAnnel_choice',array( 'required' => false )) ->add('name','text') ->add('sizes','course_guide_row_sizes',array('numcolumns' => $options['numcolumns'])) ; }
CourseGuideRowSizesType然后如下所示:
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder,array $options) { for ($i = 0; $i < $options['numcolumns']; $i++) { $builder->add($i,'text',array('required' => 'false')); } $builder->addEventListener( FormEvents::PRE_SUBMIT,function (FormEvent $event) use ($options) { $form = $event->getForm(); for ($i = 0; $i < $options['numcolumns']; $i++) { if (empty($form->get($i)->getData())) { $form->remove($i,'text'); } } } ); }
但是,当我提交表单并转储出这样的错误时:
$form-> submit($request,!$request-> isMethod(‘PATCH’)) – > getErrors()
我明白了:
"This form should not contain extra fields." #messageParameters: array:1 [▼ "{{ extra_fields }}" => "0","1","2","3","4","5" ] -extraData: array:6 [▼ 0 => "36" 1 => "38" 2 => "40" 3 => "42" 4 => "44" 5 => "46" ]
“额外数据”是“大小”字段.
我在这里做了一些明显的错误吗?
编辑2017年6月:您现在可以使用’allow_extra_fields’来抑制此错误. http://symfony.com/doc/current/reference/forms/types/form.html#allow-extra-fields
{% for size in form.sizes %} {{ form_row(sizE) }} // Extra field defined here {% endfor %}
如评论中所述,您应该使用CollectionType或以相同的方式创建和使用自定义FormType.
这将避免在表单中手动定义额外字段的需要,并且BTW会删除错误.
编辑
@nakashu已提醒目前要使用的解决方法.
只需在CourseGuideRowType中添加以下内容即可避免错误:
public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'allow_extra_fields' => true,)); }
但它不会让你在处理/绑定步骤中没有副作用.
以上是大佬教程为你收集整理的php – Symfony 2表单错误“此表单不应包含额外字段.”提交表单时全部内容,希望文章能够帮你解决php – Symfony 2表单错误“此表单不应包含额外字段.”提交表单时所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。