@gitdev

Можно ли использовать condition в Роутинге чтоб получить значение метода Entity в Symfony?

Можно ли получить значение метода статус из $blogPost сразу в аннтоациях и сравнить с значением?

/**
     * @Route("/{url}", name="blog_post", methods={"GET"}, requirements={"page"="\w+"},
Можно ли получить значение метода статус из $blogPost сразу в аннтоациях и сравнить с значением?
     *     condition="attributes.blogPost.getStatus() matches 'Published'"
     * )
     *
     * @param BlogPost $blogPost
     * @return Response
     */
    public function show(BlogPost $blogPost): Response
    {
        //...
    }
  • Вопрос задан
  • 58 просмотров
Решения вопроса 2
Maksclub
@Maksclub
maksfedorov.ru
Если вы про параметр метода контроллера (BlogPost $blogPost), то нельзя
Тк роутинг уже отработал (с condition вместе) и когда уже работает ArgumentResolver — это уже др lifecycle приложения

Иначе и не могло быть — выражения роутера отрабатывают в роутинге, ища нужный контроллер. Странно было бы еще не найти контроллер, но заполнить в контроллере значение и его использовать для матчинга :)

Если вы хотите 404 отдавать — проще проверку статуса поместить внутрь контроллера, это правда проще и удобнее
Ответ написан
Комментировать
thewind
@thewind
php программист, front / backend developer
Вам просто нужно заюзать аннотацию @ParamConverter , но написать свой кастомный, который будет дергать entity не просто по id или url, а добавит туда второе условие в запросе с полем status. На сайте симфони есть примеры.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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