@dracon55

Как в laravel, также как и в yii2, задать label аттрибутам?

Начал переход с yii2 на laravel. Точней не переход, а расширение кругозора.

И понял , что в laravel плюнули на сам принцип mvc. Все валидаторы по документации Laravel должны храниться в контроллере. Т.е если мне нужно будет провалидировать одну и ту же модель, придется еще раз писать валидаторы. Люди на просторах интернета пошли дальше: говорят, что валидацию можно хранить в роутинге (WTF). Помня yii2 с его gii (ну зачем писать миграцию с полями и комментариями к столбцам, потом опять описывать их моделм), Слава богу нашел генератор кода где валидаторы храняться в модели (nfyOm scaffolding generators). но лэйблы он с комментариев не создал. Пошел копать дальше. Оказывается в laravel с коробки нет локализации сообщений валидаторов (как в yii2) опять пошел искать, нашел локализацию... и какого было мое удивление, что при валидации валидатор отвечает сообщением, для примера :

'required'             => 'Поле :attribute обязательно для заполнения.',

\resources\lang\ru\validation.php.

т.е берется аттрибут (аттрибут, а не label карл). Т.е мне нужно в самой форме каждый раз прописывать label, на каждый валидатор писать message опять не ошибиться с его label?
и повторюсь про валидация реквеста, как же учение о том что вся бизнес логика должна быть в модели и что не должно быть Тупых Толстых Уродливых Контроллеров (ТТУК).

Все больше разочаровываюсь в laravel и резюмирую вопросы:
1) Как в laravel запихнуть label к атрибуту в модель , при этом чтоб и валидатор отображал именно label, а не :attribute и в формах его можно было отображать.
2) есть ли возможность в laravel сообщение об ошибки валидации показывать именно у поля как в yii2
  • Вопрос задан
  • 718 просмотров
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Все валидаторы по документации Laravel должны храниться в контроллере.
ORLY?

Т.е мне нужно в самой форме каждый раз прописывать label, на каждый валидатор писать message опять не ошибиться с его label?
Нет.

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

Как в laravel запихнуть label к атрибуту в модель , при этом чтоб и валидатор отображал именно label, а не :attribute и в формах его можно было отображать.
Именно в модель из коробки никак, но в Laravel есть гибкая система переопределения этих сообщений начиная с самых общих правил в локализационном файле и заканчивая кастомными сообщениями в FormRequest-классах.

есть ли возможность в laravel сообщение об ошибки валидации показывать именно у поля как в yii2
Где добавите в шаблоне, там и будут показываться. Посмотрите на формат $errors, чтобы понять, как решить конкретную проблему.

P.S. Laravel - не идеальный фреймворк, но подходить к его оценке с точки зрения "не так как в Yii/Symfony/Zend" абсолютно неправильно. Ну и совершенно не решает озвученную вами задачу расширения кругозора.
Ответ написан
mashletov
@mashletov
Math.random()
Просто прочитайте про FormRequest. Ваша проблема в том, что вы привыкли к Yii и всё остальное вам неудобно.
Ответ написан
Комментировать
itorgov
@itorgov
Full Stack Developer
Согласен с предыдущими комментаторами, что вы просто привыкли к Yii2 и вам не привычно. Мне точно так же дико видеть что валидаторы находятся в моделях (с кучей разных сценариев в зависимости от ситуации) :-)
Возможно, вы не обратили внимание на вот эту часть документации:
5a6749712afaf476152093.png
Внизу, я так понимаю, то что вам нужно, замена названия атрибута на то, что вам нужно. Т.е. вместо "Поле email обязательно для заполнения" можно сделать "Поле электронная почта обязательно для заполнения" .
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы