Lumen 提供验证错误的代码

Posted

技术标签:

【中文标题】Lumen 提供验证错误的代码【英文标题】:Lumen provide a code for validation errors 【发布时间】:2017-09-26 20:32:49 【问题描述】:

目前在流明中,当您在控制器内部使用 $this->validate($request, $rules) 函数时,它会抛出 ValidationException 并显示您的验证规则错误(当然,如果有任何失败)。

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

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

我考虑将所有规则的消息设置为“CODE|This is the message”并解析出代码,但这感觉像是一个非常黑客的解决方案。一定有更清洁的方法吧?

【问题讨论】:

【参考方案1】:

我现在已经通过以下解决方案解决了这个问题:

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;

【讨论】:

以上是关于Lumen 提供验证错误的代码的主要内容,如果未能解决你的问题,请参考以下文章

Lumen 中的中间件身份验证 [未找到“身份验证”类]

使用 Lumen + Guzzle 的 API 调用提供错误数组到字符串的转换

Lumen 如何验证用户和客户端

使用 API 密钥策略的 Lumen API 身份验证

Laravel/Lumen:验证电子邮件的数据已经存在和一般验证

是否可以在 Lumen 中使用西里尔符号(Laravel 提供)?