#php #symfony #lifecycle
#php #symfony #жизненный цикл
Вопрос:
Я пытаюсь выяснить, есть ли возможность проверить требования перед обработкой действия контроллера. В Nette есть такие методы, как checkRequirements
, onStartup
, beforeRender
где я могу это проверить.
У меня есть ресурс api album/{albumId}/song/
, и я хотел бы проверять, существует ли альбом с данным id
значением каждый раз, когда обрабатывается какое-либо действие на моем SongController, и возвращает код состояния 404, если нет.
До сих пор я нашел эту статью в документации Symfony, где я обнаружил, что нет таких методов, как preExecute
и postExecute
. Однако я предполагаю, что для добавления этих методов есть bundle или что-то в этом роде. Я думаю, что не имеет смысла создавать новый класс, чтобы использовать его только в одном контроллере.
Есть ли какие-либо другие варианты для этого?
Ответ №1:
ParamConverter делает это. Он ищет объект, используя идентификатор, предоставленный из маршрута, и выдает исключение, возвращая 404, если он ничего не находит.
// paramConverter requires that you type-hint a class, which is a best practice anyway :)
public function getArtist(AppbundleEntitySong $song)
{
//...
}