Laravel数组验证如果至少一个失败返回单个消息

时间:2016-03-14 21:23:03

标签: arrays forms validation laravel

我有一个表单,我最多可以添加30个选项字段(选项[1],选项[2],...),现在我使用'选项。*'=>请求验证中的'required'规则,但是这有一点问题,如果您提交所有选项字段为空的表单,则会显示需要每个选项字段的长错误消息,但我需要它只显示一条消息所有选项如:“每个选项字段都是必需的”

任何想法如何制作? 谢谢!

1 个答案:

答案 0 :(得分:2)

我找到了解决方法。我会在这里发布,以防有​​人需要它:

基本上,您需要在请求验证类

中覆盖formatErrors方法
protected function formatErrors(Validator $validator)
{
    $errors = parent::formatErrors($validator);

    // this will remove the keys that have index larger than 0
    $keys = array_filter(array_keys($errors), function($item) {
        $parts = explode('.', $item);

        // you might want to modify this to match your fields, 
        // I had another level of keys
        if (count($parts) === 3 and is_numeric($parts[1]) and (int)$parts[1] > 0) {
            return false;
        }

        return true;
    });

    $errors = array_intersect_key($errors, array_flip($keys));

    return $errors;
}