Php Symfony2表格不';没有显示任何错误,但它不会';t显示
您好,我在sf2中有一个表单,它链接到一个实体,我在解决它的问题时遇到了问题。对于开始显示的表单get,我写入了大量文本get's submit如果我在controller的方法中运行print\r($\u POST),它会显示我提交的数据,但是如果我从isValid()内部运行,我不会得到任何信息,也不会从中得到任何错误,这让我不知道我做错了什么,也不知道如何修复它 控制器:Php Symfony2表格不';没有显示任何错误,但它不会';t显示,php,symfony,Php,Symfony,您好,我在sf2中有一个表单,它链接到一个实体,我在解决它的问题时遇到了问题。对于开始显示的表单get,我写入了大量文本get's submit如果我在controller的方法中运行print\r($\u POST),它会显示我提交的数据,但是如果我从isValid()内部运行,我不会得到任何信息,也不会从中得到任何错误,这让我不知道我做错了什么,也不知道如何修复它 控制器: /** * @Route("/papetarie/cautare", name="papetarie_search_
/**
* @Route("/papetarie/cautare", name="papetarie_search_form")
* @Template("CatalogBundle:Default:search_form.html.twig")
*/
public function showSearchFormAction(Request $request) {
$form = $this->createFormBuilder()
->add('Keyword', 'text', array(
'label' => 'Cautare Produs',
'label_attr' => array('class' => 'sr-only'),
'attr' => array(
'placeholder' => 'Cautare Produs',
'pattern' => '.{2,}', //minlength
'class' => 'col-md-10'
),
'constraints' => array(
new NotBlank(array('message' => 'Campul nu poate sa fie gol')),
new Length(array('min' => 2))
),
))
->add('submit', 'submit', array('attr' => array('class' => 'save btn-primary')))
->getForm();
$form->handleRequest($request);
if($form->isValid()) {
$data = $form->get('Keyword')->getData();
print_r($data);
}
return array(
'search_form' => $form->createView()
);
}
搜索_form.html.twig
{% for label, flashes in app.session.flashbag.all %}
{% for flash in flashes %}
<div class="alert alert-{{ label }}">
{{ flash }}
</div>
{% endfor %}
{% endfor %}
{{form_start(search_form, {'action': path('papetarie_search_form'), 'method' : 'POST', 'attr': {'id': 'papetarie_search_form', 'class': 'form-inline'} })}}
<div class="input-group col-md-10">
{{ form_label(search_form.Keyword) }}
{{ form_errors(search_form.Keyword) }}
{{ form_widget(search_form.Keyword) }}
</div>
{{ form_widget(search_form._token) }}
{{form_end(search_form)}}
我转储错误以查看错误是什么的方式
if(!$form->isValid()) {
echo "<pre>";
//var_dump($form->getErrors());
var_dump(get_class_methods($form));
}
我明白了
return $this->render('CatalogBundle:Default:search_form.html.twig', array('search_form' => $form->createView()));
当我还在寻找解决方案时,我发现了一些有趣的事情。
例如,如果我将路由改为/search,而不是/office/search,然后提交表单,那么表单会得到数据,并且工作正常。操作返回语句必须如下所示
添加
退出
在print\r
之后,您必须使用表单呈现模板,请查看sf2 cookbook。抱歉,我不太明白您的意思:实际上我发布了答案。您也可以尝试$form->getErrorsString()
,尽管它已被弃用。在twig模板中,您可以尝试dump(search\u form)
以及为什么只有两个人回答了问题,而我发布了这么多信息,但没有人知道会出现什么问题,我却得到了-1-(在呈现模板期间引发异常(“找不到模板”CatalogBundle:Default:showSearchForm”。)in::ecommerce.html.twig在第52行。我遇到了这个错误。我的错误将showSearchForm更改为search\u form.html.twigi注意到了这个错误,但我按照您所说的那样进行了测试:-D,即使我在最后使用render,我仍然会得到相同的结果。.表单已提交,但isValid()中没有任何内容未显示。所以您想检查它何时提交?顺便说一句,您的表单必须有效才能在if语句中执行操作。
if(!$form->isValid()) {
echo "<pre>";
//var_dump($form->getErrors());
var_dump(get_class_methods($form));
}
var_dump($form->getErrorsAsString());
string(0) ""
return $this->render('CatalogBundle:Default:search_form.html.twig', array('search_form' => $form->createView()));