流明提供验证错误的代码

时间:2017-04-28 16:34:38

标签: php laravel validation lumen

当你在控制器内使用$this->validate($request, $rules)函数时,当前在流明中,它将为你的验证规则抛出一个ValidationException错误(如果有任何失败的话)。

但是,我需要为每个验证规则都有一个代码。我们可以为规则设置自定义消息,但我需要添加一个唯一的代码。

我知道有一个“formatErrorsUsing”函数,您可以在其中传递格式化程序。但是传递给它的参数返回的数据已经删除了失败的规则的名称,并用它们的消息替换了它们。我当然不希望对消息进行字符串检查以确定应该去的代码。

我考虑将所有规则的消息设置为“CODE | This is the message”并解析代码,但这感觉就像一个非常黑客的解决方案。必须有一个更干净的方式吗?

1 个答案:

答案 0 :(得分:0)

我现在用以下解决方案解决了这个问题:

private function ruleToCode($rule) {
    $map = [
        'Required' => 1001,
    ];

    if(isset($map[$rule])) {
        return $map[$rule];
    }

    return $rule;
}

public function formatValidationErrors(Validator $validator) {
    $errors = [];

    foreach($validator->failed() as $field => $failed) {
        foreach($failed as $rule => $params) {
            $errors[] = [
                'code' => $this->ruleToCode($rule),
                'field' => $field,
            ];
        }
    }

    return $errors;
}