Многие считают, что метод
after() в Form Request срабатывает после успешной валидации.Логично? Да.
Но — неправильно.
На самом деле
after() вызывается после завершения валидации, даже если она провалилась.И это легко превращается в источник неожиданных багов и лишних SQL-запросов.
📉 Пример из практики:
даже при невалидных данных (
brand_id = «Hepu») Laravel всё равно лезет в базу:select exists(select * from products where article = ...)А если в теле запроса прилетит массив вместо строки — получите 500-ку и «Array to string conversion».
✅ Как обезопаситься: не делать тяжёлые проверки (например, через БД) прямо в Form Request.
Логика валидации данных — в Form Request, бизнес-валидация — в сервисах.
Так код станет быстрее, чище и проще в тестировании.
👉 Примеры в статье
Библиотека пхпшника
