2016-01-15 5 views
1

Я хочу создать собственное правило проверки с помощью сообщения об ошибке проверки подлинности. Для этого я создал правило:Laravel 5.2 Пользовательское сообщение проверки с пользовательской функцией проверки

$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; 
} 

Все работает нормально t проблема - это мое настраиваемое сообщение для app_id.isValidTag не работает, даже все другие сообщения работают нормально.

Пожалуйста, предложите мне, что я пропущу здесь или в Laravel 5.2 есть некоторые изменения для отображения сообщения. Любая идея будет оценена по достоинству.

ответ

5

Вот отличный учебник для этого: http://itsolutionstuff.com/post/laravel-5-create-custom-validation-rule-exampleexample.html

Я думаю, что вы сделали это Laravel 4. * способ. Вот как это делается в Laravel 5,2 в моем примере, где я делал регистрационную форму авторизации, файлы, такие как AuthController.php был Premade:

  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 // если вы не сделали заказчиком использовать Провайдеры/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. validation.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 
    
+1

Вы можете также добавить сообщение об ошибке непосредственно в функции с помощью '' '$ validator-> setCustomMessage (['. '=>' <сообщение об ошибке> ']) '' ' – arleslie

+0

@ user3632055, если вы там, мне нужна небольшая помощь – lewis4u

+0

@ lewis4u whats up? – user3632055

Смежные вопросы