gpt4 book ai didi

forms - Symfony 2 此表单不应包含额外的字段

转载 作者:行者123 更新时间:2023-12-04 05:51:57 27 4
gpt4 key购买 nike

我使用 formBuilder 创建了一个表单在 Symfony 中。我使用外部样式表并引用标签 ID 为表单输入添加了一些基本样式。表单正确呈现并正确处理信息。

但是,它会输出一个不需要的无序列表,其中的列表项包含以下文本:This form should not contain extra fields.
我真的很难摆脱这个通知。我想知道是否有人可以帮助我理解为什么它会用我的表单呈现以及如何删除它?

提前谢谢了!

Controller

$form = $this->createFormBuilder($search)
->add('searchinput', 'text', array('label'=>false, 'required' =>false))
->add('search', 'submit')
->getForm();

$form->handleRequest($request);

Twig Output(正确输出和处理表单
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>

最佳答案

在我看来,由于 token 字段,您遇到了问题。如果是这样,请尝试向 createFormBuilder() 添加选项:

$this->createFormBuilder($search, array(
'csrf_protection' => true,
'csrf_field_name' => '_token',
))
->add('searchinput', 'text', array('label'=>false, 'required' =>false))
->add('search', 'submit')
->getForm();

要找出额外的字段,请在 Controller 中使用此代码,您可以在其中获取请求:
$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);

关于forms - Symfony 2 此表单不应包含额外的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com