表单 – Symfony 2此表单不应包含额外字段

前端之家收集整理的这篇文章主要介绍了表单 – Symfony 2此表单不应包含额外字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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);

猜你在找的HTML相关文章