【问题标题】:How to return custom error message from controller method validation如何从控制器方法验证返回自定义错误消息
【发布时间】:2017-02-25 07:19:49
【问题描述】:

如何使用这种格式返回自定义错误消息?

$this->validate($request, [
  'thing' => 'required'
]);

【问题讨论】:

    标签: php laravel validation laravel-validation


    【解决方案1】:

    要获得自定义错误消息,您需要在第三个参数上传递自定义错误消息,就像那样

    $this->validate(
        $request, 
        ['thing' => 'required'],
        ['thing.required' => 'this is my custom error message for required']
    );
    

    【讨论】:

    • 二维数组如何添加自定义消息?
    • 我不确定为什么文档中没有更清楚地说明这一点。这是一种简单的方法,适用于 Laravel 7。谢谢!
    【解决方案2】:

    对于多个字段、角色和字段角色特定的消息

    $this->validate(
            $request, 
            [   
                'uEmail'             => 'required|unique:members',
                'uPassword'          => 'required|min:8'
            ],
            [   
                'uEmail.required'    => 'Please Provide Your Email Address For Better Communication, Thank You.',
                'uEmail.unique'      => 'Sorry, This Email Address Is Already Used By Another User. Please Try With Different One, Thank You.',
                'uPassword.required' => 'Password Is Required For Your Information Safety, Thank You.',
                'uPassword.min'      => 'Password Length Should Be More Than 8 Character Or Digit Or Mix, Thank You.',
            ]
        );
    

    【讨论】:

    • 谢谢,它帮助我在 laravel 5.5 中添加自定义错误消息... :-)
    【解决方案3】:

    https://laravel.com/docs/5.3/validation#working-with-error-messages

    $messages = [
        'required' => 'The :attribute field is required.',
    ];
    
    $validator = Validator::make($input, $rules, $messages);
    

    “在大多数情况下,您可能会在语言文件中指定您的自定义消息,而不是直接将它们传递给验证器。为此,请将您的消息添加到 resources/lang/xx/validation.php 语言中的自定义数组文件。”

    【讨论】:

      【解决方案4】:

      您需要先在要显示错误消息的视图页面中添加以下行:

      <div class="row">
              <div class="col-md-4 col-md-offset-4 error">
                  <ul>
                      @foreach($errors->all() as $error)
                          <li>{{$error}}</li>
                      @endforeach
                  </ul>
              </div>
          </div>
      

      这是一个演示控制器,错误消息将显示在该页面上:

      public function saveUser(Request $request)
      
       {
           $this->validate($request,[
              'name' => 'required',          
              'email' => 'required|unique:users',          
              ]);
        $user=new User();
        $user->name= $request->Input(['name']);
        $user->email=$request->Input(['email']);
        $user->save();
        return redirect('getUser');
       }
      

      详情可以关注Blog post。 除此之外,你也可以关注 laravel 官方文档Validation

      【讨论】:

      • 我说的是可以在这里完成的自定义消息... $messages = [ 'required' => 'The :attribute field is required.', ]; $validator = Validator::make($input, $rules, $messages);
      • 但使用 $this->validate()
      • @cmac 完全一样。控制器中validate 的签名(通过ValidatesRequests 类)是void validate(Request $request, array $rules, array $messages = array(), array $customAttributes = array())
      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 2011-10-12
      • 2012-06-19
      • 1970-01-01
      相关资源
      最近更新 更多