我正在尝试在twig中显示与特定form_field相关的错误消息,但它没有显示任何内容。
我已将validation.yml中与formType字段相关的错误定义为
-\-\Entity\Customer:
properties:
address2:
- NotBlank:
message: 'Testing required'
当我打印时:
//Controller Class
$validator = $this->get('validator');
$errors = $validator->validate($customer);
//Controller
return $this->render( 'MyBundle:RegistrationPages:register.html.twig',
array (
'errors' => $errors,
'form'=>$form
)
);
它显示错误信息:
//Twig
{% if errors is defined %}
<h1>The Form has following errors</h1>
{% for error in errors %}
{{ error.message }}
{% endfor %}
{% endif %}
输出:
需要测试
但:
{{ form_errors(form.address2) }}
没有显示任何内容。
答案 0 :(得分:3)
正如您在验证文件中所看到的,NotBlank
属性上定义了address2
约束:
properties:
address2:
- NotBlank:
message: 'Testing required'
因此,该表单字段上的所有错误都将在该字段上提供:
{{ form_errors(form.address2) }}
注意:您不必将此类错误传递给您的模板:
//Get all errors that are attributed to the entity itself
{{ form_errors(form) }}
//Get all errors for the individual field `address2 `
{{ form_errors(form.address2) }}
答案 1 :(得分:2)
简而言之:如果您只是验证对象,而不是表单,则表单中不会出现错误。
如果您执行$errors = $validator->validate($customer);
,则验证$customer
而不是表单。因此,错误不会附加到表单中,只是返回它们,您必须按照问题的方式将它们发送到模板。
如果您想验证表单并能够访问表单对象中的错误,请使用$form->isValid();
(我无法向您展示,因为我没有您的表单代码。)
http://symfony.com/doc/current/book/validation.html#validation-and-forms
答案 2 :(得分:0)
您必须在$ form-&gt; handleRequest($ request)之后呈现视图。这意味着您应该像这样编写代码:
$form->handleRequest($request);
$form_view = $form->createView();
.... ....
return $this->render( 'MyBundle:RegistrationPages:register.html.twig',
array (
'errors' => $errors,
'form'=>$form_view
)
);