@yalex1442

Как использовать get параметры в route anotations sf2?

Здравствуйте.
Имеется такой маршрут;

/**
     * @Route("/search.{_format}/media/{tagName}",
     *  name="searchMedia",
     *  requirements= {
     *  "size":"thumbnail|low_resolution|standard_resolution",
     *  "tagName":"\w+",
     *  "count":"\d+",
     *  "tagId":"\d+",
     *  "_format":"web|json"
     * },
     *  defaults={
     * "count" : "33",
     * "tagId" : "0",
     * "size":"thumbnail",
     * "_format":"web"
     * }
     * )
     */

Хочу генерировать ссылки содержащие get параметры, но при генерации ссылок в шаблоне twig не проставляются значения описанные в requirements ,
но без проблем вставляются get параметры не описанные в requirements и {slug} параметры в маршруте.
например из:

{{ path('searchMedia', ({tagName: tag.name,param1:"value1",tagId:"100500"})) }}
получим:
/search.web/media/{tag.name}?param1=value1

В гугле советуют генерировать ссылки в контроллере ,а значит и проверять входные параметры в контроллере.
Я бы хотел оставить все проверки входных параметров в route anotations

Есть ли способ написать маршрут примерно так:
/**
     * @Route("/search.{_format}/media/{tagName}",
     *  name="searchMedia",
     *  requirements= {
     *  " GET(size)":"thumbnail|low_resolution|standard_resolution",
     *  "tagName":"\w+",
     *  "GET(count)":"\d+",
     *  "GET(tagId)":"\d+",
     *  "_format":"web|json"
     * },
     *  defaults={
     * "GET(count)" : "33",
     * "GET(tagId)" : "0",
     * "GET(size)":"thumbnail",
     * "_format":"web"
     * }
     * )
     */


и чтоб ссылка в twig генерировалась на основе этого маршрута?

************************************************************************************
Решил сделать все традиционно используя sf fom validate
route сокращу до
/**
* @Route("/search.{_format}/media/{tagName}",
* name="searchMedia",
* requirements= {
* "_format":"web|json"
* },
* defaults={
* "_format":"web"
* }
* )
  • Вопрос задан
  • 360 просмотров
Пригласить эксперта
Ответы на вопрос 1
e_svirsky
@e_svirsky
Web Developer
Мне кажется или у вас тут лишние скобки:
{{ path('searchMedia', ({tagName: tag.name,param1:"value1",tagId:"100500"})) }}

Должно быть так:
{{ path('searchMedia', {tagName: tag.name,param1:"value1",tagId:"100500"}) }}
Ответ написан
Ваш ответ на вопрос

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

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