在Symfony2中组合所有NotBlank错误消息

时间:2014-02-23 07:10:11

标签: validation symfony

我正在尝试将所有NotBlank错误消息合并为一个。

如果错误数组包含至少1个NotBlank类型的错误,我希望它只显示一条消息,例如“请填写所有字段。”

我该怎么做?

这是我的枝条代码

 {{form_start(form, {'attr': {'novalidate': 'novalidate'}})}}
    <div>
        {{form_widget(form.firstName)}}
        {{form_widget(form.lastName)}}
    </div>
    <div>
        {{form_widget(form.username)}}
        {{form_widget(form.email)}}
    </div>
    <div>
        {{form_widget(form.password.first, {'attr' : { 'placeholder' : 'Password' } })}}
        {{form_widget(form.password.second, {'attr' : { 'placeholder' : 'Confirm Password' } })}}
    </div>
    <div>
        {{form_label(form.birthday)}}
    </div>
    <div>
        {{form_widget(form.birthday)}}
    </div>

    <div>
        {{form_widget(form.gender)}}
    </div>

     <div>
        {{form_widget(form.save)}}
    </div>

    {{ form_errors(form.firstName) }}
    {{ form_errors(form.lastName) }}
    {{ form_errors(form.username) }}
    {{ form_errors(form.email) }}
    {{ form_errors(form.password.first) }}

    {{form_end(form)}}

1 个答案:

答案 0 :(得分:0)

您可以创建CallbackValidator

http://symfony.com/doc/current/reference/constraints/Callback.html

并在validate方法中,检查至少一个所需字段是否为空,如果为true,则调用

/**
 * @Assert\Callback
 */
public function validate(ExecutionContextInterface $context)
{
    if(empty($this->field1) || empty($this->field2)) {
        $context->addViolation($message);
    }
}

这样您就会收到全局表单错误。