Laravel 5 — где разместить многоразовый пользовательский валидатор?

Мне интересно, где находится правильное место для пользовательского валидатора, который я хочу использовать более чем в одном месте?

Например, у меня есть валидатор min_image_size:

Validator::extend('min_image_size', function($attribute, $value, $parameters) {
    $imageSize = getimagesize($value->getPathname());
    return ($imageSize[0] >= $parameters[0] && $imageSize[1] >= $parameters[1]);
});

Где я должен разместить его в соответствии с правильным способом Laravel?


person Limon Monte    schedule 20.04.2015    source источник


Ответы (2)


Обязательно расширите валидатор в поставщике услуг. Вы можете использовать существующий app/Providers/AppServiceProvider.php или создать еще один только для проверки.

Затем в методе boot() добавьте следующее:

public function boot(){
    $this->app['validator']->extend('min_image_size', function($attribute, $value, $parameters) {
        $imageSize = getimagesize($value->getPathname());
        return ($imageSize[0] >= $parameters[0] && $imageSize[1] >= $parameters[1]);
    });
}

Возможно, также стоит поместить фактические правила проверки в отдельный класс и использовать этот синтаксис:

$this->app['validator']->extend('min_image_size', 'MyCustomValidator@validateMinImageSize');
person lukasgeiter    schedule 20.04.2015

Я думаю, что создам класс для пользовательской проверки, где я смогу написать свои собственные правила и поместить их в папку библиотек или, возможно, в промежуточное программное обеспечение.

person shivanshu patel    schedule 20.04.2015