Zend url view helper - сохранение существующих параметров в обратном маршруте

На данный момент в моем проекте ZF есть такая структура URL:

/news/index/news_page/1/blog_page/2

Когда я генерирую свою разбивку на страницы, я использую помощник URL следующим образом:

<?php echo $this->url(array('blog_page'=>3)); ?>

Что генерирует такой URL:

/news/index/news_page/1/blog_page/3

Что я хотел бы сделать, так это использовать собственный маршрут, чтобы иметь более красивые URL-адреса, например:

new Zend_Controller_Router_Route(
  'news/:news_page/:blog_page', 
  array('controller' => 'news', 'action' => 'index')
);

Однако, когда я пытаюсь использовать этот маршрут в помощнике представления:

<?php echo $this->url(array('blog_page'=>3), 'newsIndex'); ?>

Выдает ошибку, потому что я не указал news_page в параметрах.

Как я могу обойти это и указать помощнику URL использовать «текущие» значения для этих параметров?


person Ciaran McNulty    schedule 12.06.2009    source источник


Ответы (1)


Помощник URL-адреса будет использовать существующий параметр, если он существует в текущем запросе. Кажется, что в вашем конкретном случае параметр news_page не установлен в объекте запроса. Установка значения по умолчанию для параметра news_page в вашем маршруте должна решить вашу проблему.

Итак, ваше определение маршрута должно выглядеть примерно так:

new Zend_Controller_Router_Route(
  'news/:news_page/:blog_page', 
  array('controller' => 'news', 'action' => 'index', 'news_page' => 1)
);
person jason    schedule 13.06.2009
comment
Спасибо, Джейсон, именно это и происходило. - person Ciaran McNulty; 13.06.2009