【问题标题】:Laravel 5.2 Custom validation message with custom validation functionLaravel 5.2 具有自定义验证功能的自定义验证消息
【发布时间】:2016-01-15 13:26:34
【问题描述】:

我想创建带有自定义验证错误消息的自定义验证规则。为此,我创建了一个规则:

$rule => [
    'app_id' => 'isValidTag'
]

对于自定义消息:

$message => [
   app_id.isValidTag   => 'Not a Valid id'
];

之后我创建了服务提供者:

class CustomValidationServiceProvider extends ServiceProvider
{
    public function boot() {

    //parent::boot();

    $this->app->validator->resolver(function($transator,$data,$rules,$messages){
            return new CustomValidator($transator,$data,$rules,$messages);
        });
    }
}

我的自定义验证类是:

class CustomValidator extends Validator {
    if(empty($parameters)) {
        return true;
    }

    $conext = $parameters[0];
    $tag = Tag::where('id', $value)->where('context', $conext)->get();

    $flag = false;
    if($tag->count() > 0) {
        $flag = true;
    }       

    return $flag;
}

一切正常,但问题是我的app_id.isValidTag 的自定义消息无法正常工作,即使所有其他消息都正常工作。

请建议我在这里缺少什么或在 Laravel 5.2 中显示消息的一些更改。任何想法将不胜感激。

【问题讨论】:

    标签: validation laravel-5.2


    【解决方案1】:

    这里有一个很棒的教程:http://itsolutionstuff.com/post/laravel-5-create-custom-validation-rule-exampleexample.html

    我认为你是用 Laravel 4.* 的方式做到的。这就是 Laravel 5.2 中的操作方式 在我的示例中,我正在制作注册授权表格,因此像 AuthController.php 这样的文件是预制的:

    1. AuthController.php

      Validator::make($data, [
          ...
          // add your field for validation
          'name_of_the_field' => 'validation_tag', // validation tag from validation.php
          ...
      
    2. CustomAuthProvider.php // 如果您没有创建自定义提供程序,请使用 Providers/AppServiceProvider.php

      public function boot() {
          ...
          Validator::extend('validation_tag', function($attribute, $value, $parameters, $validator) {
                  // handle here your validation
                  if (  your_query ) {
                      return true;
                  }
                  return false;
          });
      
    3. 验证.php

      ...
      // add your validation tag and message to be displayed
      'validation_tag'           => 'The field :attribute isn't good',
      ...
      
    4. file.blade.php // 在页面末尾添加所有错误添加

      @if (count($errors) > 0)
            <div class="alert alert-danger">
                   <ul>
                         @foreach ($errors->all() as $error)
                               <li>{{ $error }}</li>
                         @endforeach
                   </ul>
             </div>
      @endif
      

    【讨论】:

    • 也可以直接在函数中使用$validator-&gt;setCustomMessage(['&lt;attribute&gt;.&lt;rule name&gt;' =&gt; '&lt;error message&gt;'])添加错误信息
    • @user3632055 如果你在那里,我需要一点帮助
    • @lewis4u 怎么了?
    • 我解决了我的问题....但是thanx....这是关于自定义规则的验证消息。我进行了本地化,需要将消息放入validation.php 文件中
    猜你喜欢
    • 2014-05-31
    • 2017-06-28
    • 2017-12-13
    • 1970-01-01
    • 2020-07-18
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多