2015-03-11 3 views
0

Мне удалось создать собственное правило для проверки правильности: http://www.sitepoint.com/data-validation-laravel-right-way-custom-validators/
Моя единственная проблема в том, что в laravel 5 есть новая файловая структура. Оно должно быть:
in <?php namespace App\Providers; ValidationExtensionServiceProvider.php
in <?php namespace App\Services; ValidatorExtended.php
Но Laravel не могу найти мой ValidatorExtended.php, если его нет в App \ Providers. Ошибка:Laravel не может найти услугу

FatalErrorException in ValidationExtensionServiceProvider.php line 11: Class 'App\Providers\ValidatorExtended' not found 

Как сказать laravel, чтобы посмотреть в App \ Services, а не в App \ Providers?

ValidatorExtended.php:

<?php namespace App\Services; 

use Illuminate\Validation\Validator as IlluminateValidator; 

class ValidatorExtended extends IlluminateValidator { 

    private $_custom_messages = array(
     .... 
    ); 

    public function __construct($translator, $data, $rules, $messages = array(), $customAttributes = array()) 
    { 
     parent::__construct($translator, $data, $rules, $messages, $customAttributes); 

     $this->_set_custom_stuff(); 
    } 

    .... 



} 

ValidationExtensionServiceProvider.php:

<?php namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 

class ValidationExtensionServiceProvider extends ServiceProvider { 

    public function register() {} 

    public function boot() { 
      $this->app->validator->resolver(function($translator, $data, $rules, $messages = array(), $customAttributes = array()) { 
       return new ValidatorExtended($translator, $data, $rules, $messages, $customAttributes); 
      } 
    } 

} 
+0

Попробуйте запустить 'comper dump-autoload' на консоли в корне вашего проекта –

+0

Никакого эффекта. – Dancia

ответ

2

Вам необходимо указать пространство имен вашего ValidatorExtended аксессору:

<?php namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 

class ValidationExtensionServiceProvider extends ServiceProvider { 

    public function register() {} 

    public function boot() { 
      $this->app->validator->resolver(function($translator, $data, $rules, $messages = array(), $customAttributes = array()) { 
       return new App\Services\ValidatorExtended($translator, $data, $rules, $messages, $customAttributes); 
      } 
    } 
} 

или добавить использование заявление на в верхней части вашего файла:

<?php namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use App\Services\ValidatorExtended; 

class ValidationExtensionServiceProvider extends ServiceProvider { 

    public function register() {} 

    public function boot() { 
      $this->app->validator->resolver(function($translator, $data, $rules, $messages = array(), $customAttributes = array()) { 
       return new ValidatorExtended($translator, $data, $rules, $messages, $customAttributes); 
      } 
    } 
} 
+0

Я действительно пробовал использовать App \ Services; перед отправкой вопроса подумал, что он найдет использование «ValidatorExtended» сам по себе, на самом деле не пробовал полный путь. Спасибо. – Dancia