Может войдёшь?
Черновики Написать статью Профиль
RomanBush

RomanBush

Вступил в наши ряды: 12 декабря 2019

Замечен в последний раз: 12 декабря 2019

Не писал на форуме

Вы сможете отправить письмо, если войдёте

Комментарии (2)

RomanBush

Чуть поподробнее про вот этот способ:
Validator::extend('foo', 'FooValidator@validate');
Рассказываю про ларавель 6+.
Создаём свой класс (в отдельном файле, конечно же), который ни от кого не наследуем. Его обязательно надо положить туда, где его подхватит автозагрузка классов. Это, например — app/, или любая созданная папка внутри app, например, app/validators/, или уже существующая папка, например, app/Http/Controllers/ если вам так нравится.
Дальше пишем в методе boot вашего сервис провайдера (который app/Providers/AppServiceProvider.php):

Validator::extend('foo', 'FooValidator@validate');

Здесь — foo — имя правила, которое вы потом будете использовать для вызова своего класса. FooValidator — имя вашего класса, а validate — имя метода внутри класса, который и будет вызываться.
Внимание, нюанс, над которым я бился два дня, не понимая, какого чёрта мой класс не виден: путь к классу надо указывать полностью!
То есть, если вы положили ваш класс в app/validators/, то надо написать так:

Validator::extend('foo', 'App\validators\FooValidator@validate');

RomanBush

Нифига, хороший перевод. Тут некоторые вещи адаптированны для новичков. На английском некоторые вещи менее понятны, чем здесь.
Если чо — я обе версии прочитал. Причём обе по два раза. Понял примерно 70%. Некоторые вещи понял только благодаря тому, что прочитал обе версии статьи. Они слегка отличаются.