Как вызвать метод в конструкторе FormRequest?

Доброго времени суток! Решил вынести в FormRequest помимо валидации данных всю логику доступа к экшену в контроллере (вроде как хоршая практика делать контроллеры тонкими). Так же пришла идея хранить в реквесте часто используемые переменные, экземпляры моделей и т.п.
Создал абстрактный класс, наследовавшись от FormRequest, в нем создал абстрактный метод setProperties. Теперь в каждом отдельном реквесте я могу заранее описать всю необходимую логику доступа в методе authorize(), а все необходимые данные присвоить свойствам через метод setProperties().
Однако столкнулся с проблемой: необходимо добавить метод setProperties() в конструктор реквеста, чтобы данные присваивались и были доступны через реквест в контроллере, но прямое добавление в __construct вызывает только 500 ошибку (Server Error).

Подскажите, пожалуйста, как можно правильно реализовать это?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@jazzus
Тонкими лучше делать не только контроллеры, но и форм-реквесты. И любые другие классы. Для этого каждый должен выполнять свою функцию. Например, авторизацией в Ларавел занимаются политики авторизации. Кроме чистоты кода и отсутствия велосипедов, логику доступа в политиках можно юзакть по всему приложению. Типа $user->can('view', $post) и т.д.
пришла идея хранить в реквесте часто используемые переменные

Какую-то свою логику если хочется куда-то вынести из контроллера лучше использовать свои сервис классы, а не первые попавшиеся классы Ларавел.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы