2015-02-20 3 views
1

У меня возникла небольшая проблема с маршрутизацией Symfony.Проблема с маршрутизацией Symfony

Это мой контроллер действия:

/** 
    * @Route("/admin/pricelist/list/{year}/{week}", name="pricelist_list") 
    */ 
    public function getPricelistAction(Request $request, $year = 0, $week = 0) 
    {  
     $entityManager = $this->getDoctrine()->getManager(); 

     if ($year === 0) { 
      $year = (int)date('Y'); 
     } 

     if ($week === 0) { 
      $week = (int)date('W'); 
     } 

     $start = new \DateTimeImmutable($year . '-1-1'); 
     $stop = $start->modify('+1 year'); 

      // ... I return the week and year to my twig 
    } 

Теперь в моей веточке у меня есть следующие:

<div> 
     <div class="form-group"> 
      <label>Year</label> 
      <select class="form-control" id="yearSelection"> 
       {% for y in (year-3)..(year+3) %} 
        <option {% if y == year %}selected="selected"{% endif %} 
          data-url="{{ path('pricelist_list', {'year': y, 'week': week}) }}"> 
         {{ y }} 
        </option> 
       {% endfor %} 
      </select> 
     </div> 

     <div class="form-group"> 
      <label>Week</label> 
      <select class="form-control" id="weekSelection"> 
       {% for key, w in weeks %} 
        <option {% if w == week %}selected="selected"{% endif %} 
          data-url="{{ url('pricelist_list', {'year': year, 'week': w}) }}"> 
         {{ w }} 
        </option> 
       {% endfor %} 
      </select> 
     </div> 
    </div> 

Но когда я выбираю год или неделю, это не приведет меня url admin/pricelist/list/{{year}}/{{week}} как предложено в моей маршрутизации, но до: admin/pricelist/list?year=2015&week=8.

Я действительно не знаю, что я делаю неправильно, поскольку другие функции на других страницах работают правильно с маршрутизацией таким образом.

Может кто-нибудь указать мне в правильном направлении?

+0

Возможно ли, что у вас есть другой маршрут с тем же именем, который не принимает параметры в URL-адресе, и поэтому ваши параметры преобразуются в строку запроса? – DonCallisto

+0

Хм, я просмотрел свой проект и нашел несколько таких переадресаций: $ this-> redirect ($ this-> generateUrl ('pricelist_list')); Это может быть причиной? – Matheno

+0

Нет, перенаправление не должно быть проблемой вообще. Я вижу, что вы используете path() и url(), знаете ли вы о различиях, не так ли? – DonCallisto

ответ

2

отлаживать маршруты с: php app/console router:debug

Тогда вы увидите, что pricelist_list не принимает никаких параметров.

Возможные причины, которые выскочили на мой взгляд:

  • Вы используете метод конфигурации YAML и ваши @Route аннотации игнорируются
  • Контроллер вы редактируете не один, который загружается (например, резервное копирование в другой папке)
+0

Вы правы. Я называю свои прейки через контроллер getPricelistAction(), но фактическое действие, которое получает параметры, было, конечно, listAction(). – Matheno

Смежные вопросы