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

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

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

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

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

【问题讨论】:

    标签: php laravel validation lumen


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2018-11-11
      • 2017-06-08
      • 1970-01-01
      • 2020-12-28
      • 2011-05-22
      相关资源
      最近更新 更多