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 + Guzzle 的 API 调用提供错误数组到字符串的转换