流明自定义验证响应

Posted

技术标签:

【中文标题】流明自定义验证响应【英文标题】:lumen customize validation response 【发布时间】:2017-09-24 17:39:32 【问题描述】:

如果验证在流明中失败,我正在尝试创建自定义响应。但得到默认响应。期待像

这样的回应
    [
       'code'    => 406,
       'message' => "forbidden",
       'errors'  => 
                      "phone": [
                             "The phone must be 11 digits."
                               ]
                    ,
    ]

但得到这样的默认响应


  "phone": [
    "The phone must be 11 digits."
  ]

这是我尝试过的。

public function validatePhoneNumber(Request $request)
    
        try 
            $this->validate($request, ['phone' => 'required|digits:11']);
         catch (ValidationException $e) 
            return response()->json([
                'code'    => 406,
                'message' => "forbidden",
                'errors'  => $e->getMessage(),
            ]);
        
        return [
            'code'          => 200,
            'message'       => 'Phone number ok',
            'data'          => $request->phone
        ];
    

【问题讨论】:

【参考方案1】:

您可以在控制器中使用函数buildFailedValidationResponse

protected function buildFailedValidationResponse(Request $request, array $errors) 
    return ["code"=> 406 , "message" => "forbidden" , "errors" =>$errors];

【讨论】:

这对我有用。谢谢。我在app/Http/Controllers/Controller.php 里面有这个。必须将use Illuminate\Http\Request; 放在文件顶部以避免buildFailedValidationResponse 函数定义约束出错。

以上是关于流明自定义验证响应的主要内容,如果未能解决你的问题,请参考以下文章

流明封装。如何加载自定义validation.php 消息文件?

使用自定义 json 响应进行 Laravel 验证

如何在 webflux 中实现自定义身份验证管理器时对未经授权的请求响应自定义 json 正文

ServiceStack 对身份验证失败的自定义响应

Angular 11 自定义 ISBN 验证器响应式表单

使用 AuthenticationFailureHandler 在 Spring Security 中自定义身份验证失败响应