我在Symfony中使用formBuilder创建了一个表单.我使用外部样式表并引用标记ID为表单输入添加一些基本样式.表单正确呈现并正确处理信息.
但是,它会输出一个不需要的无序列表,其中包含一个包含以下文本的列表项:此表单不应包含额外的字段.
我很难摆脱这个通知.我想知道是否有人可以帮助我理解为什么用我的表格呈现它以及如何删除它?
提前谢谢了!
调节器
$form = $this->createFormBuilder($search) ->add('searchinput','text',array('label'=>false,'required' =>false)) ->add('search','submit') ->getForm(); $form->handleRequest($request);
This form should not contain extra fields.
呈现HTML
<form method="post" action=""> <div id="form"> <ul> <li>This form should not contain extra fields.</li> </ul> <div> <input type="text" id="form_searchinput" name="form[searchinput]" /> </div> <div> <button type="submit" id="form_search" name="form[search]">Search</button> </div> <input type="hidden" id="form__token" name="form[_token]" value="bb342d7ef928e984713d8cf3eda9a63440f973f2" /> </div> </form>
解决方法
在我看来,由于令牌字段,你有问题.如果是这样,请尝试向createFormBuilder()添加选项:
$this->createFormBuilder($search,array( 'csrf_protection' => true,'csrf_field_name' => '_token',)) ->add('searchinput','required' =>false)) ->add('search','submit') ->getForm();
$data = $request->request->all(); print("REQUEST DATA<br/>"); foreach ($data as $k => $d) { print("$k: <pre>"); print_r($d); print("</pre>"); } $children = $form->all(); print("<br/>FORM CHILDREN<br/>"); foreach ($children as $ch) { print($ch->getName() . "<br/>"); } $data = array_diff_key($data,$children); //$data contains now extra fields print("<br/>DIFF DATA<br/>"); foreach ($data as $k => $d) { print("$k: <pre>"); print_r($d); print("</pre>"); } $form->bind($data);