【发布时间】:2014-12-07 15:14:48
【问题描述】:
我需要根据情况在特定字段下显示错误。就我而言,可能有两个。分别是Password is empty 和Passwords do not match。目前所有消息都显示在password.second 字段下。
我需要在password.first 字段下显示Password is empty 错误,在password.second 字段下显示Passwords don not match。
我尝试通过{% for error in form.password.first.vars.errors %} 和{% for error in form.password.second.vars.errors %} 分别生成错误,但失败了,因为我需要的两条错误消息只有在我使用{% for error in form.password.vars.errors %} 时才会呈现。我已经在这工作了很长一段时间,然后空手而归。实现如下,
我正在使用repeated字段来实现password和confirm password,如下所示,
$builder->add( 'password', 'repeated', array( 'type' => 'password','required' => true, 'invalid_message' => ErrorMessages::PASSWORDS_DO_NOT_MATCH, 'options' => array('attr' => array('class' => 'password-field form-control')),'first_options' => array('label' => false,'error_bubbling' => true,'label_attr'=>array('class'=>'col-sm-4 control-label')),'second_options' => array('label' => false,'label_attr'=>array('class'=>'col-sm-4 control-label'))));
而password entity验证如下,
class User implements UserInterface, \Serializable {
/**
* @Assert\Email(message=ErrorMessages::EMAIL_ADDRESS_INVALID)
* @Assert\NotBlank(message=ErrorMessages::EMAIL_ADDRESS_EMPTY)
*/
private $email;
/**
* @Assert\NotBlank(message=ErrorMessages::PASSWORD_EMPTY, groups={"full"})
*/
private $password;
....
我以如下方式在twig中渲染这两个字段,
<div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
{{ form_label(form.password.first, "Password") }}
<div class="col-sm-8">
{{ form_row(form.password.first) }}
</div>
</div>
<div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
{{ form_label(form.password.second, "Confirm password") }}
<div class="col-sm-8">
{{ form_row(form.password.second) }}
<span class="help-block">
{% for error in form.password.vars.errors %}
{{ error.messageTemplate|trans(error.messageParameters, 'validators')~'' }}
{% endfor %}
</span>
</div>
</div>
【问题讨论】:
-
您是在使用 FOSUserBundle,还是这些都是原创作品?只是想知道当前行为来自哪里。
-
啊,抱歉,错过了您自己添加
repeated字段的地方! -
@frumious 感谢您的回复.. 是的,我正在使用重复字段 :)
标签: php forms validation symfony error-handling