Контроллер проверяет требования к процессу действия

#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)
{
    //...
}