Пагинатор Zend Framework принудительно использует параметры $ _GET - PullRequest
0 голосов
/ 27 сентября 2010

Можно ли использовать paginator с параметрами $ _GET?

Например, у меня есть такой маршрут:

$router->addRoute('ajax_gallery',
new Routes_Categories(
'/:lang/:category/age/:dep/:cat/:towns',
array(
"page" => 1,
"dep" => 0,
"cat" => 0,
"towns" => 0
),
array(
"dep" => "[0-9]+",
"cat" => "[0-9]+"
)

));

И я делаю запрос вот так через ajax:

http://localhost/en/gallery?dep=9&cat=27&towns=1

Но ссылки, возвращаемые из результатов, не имеют? Dep = 9 & cat = 27 & towns = 1

Как заставить Zend paginator использовать переданные параметры $ _GET внутри ссылки на страницыпоколение?

Чтобы возвращаемые ссылки были:

http://localhost/en/gallery/2?dep=9&cat=27&towns=1
http://localhost/en/gallery/3?dep=9&cat=27&towns=1
http://localhost/en/gallery/4?dep=9&cat=27&towns=1

и т.д ...

или даже

http://localhost/en/gallery/2/9/27/1
http://localhost/en/gallery/3/9/27/1
http://localhost/en/gallery/4/9/27/1

, как они определены внутри маршрутаи т.д ...

Спасибо

1 Ответ

1 голос
/ 01 октября 2010

Помощник по просмотру URL всегда выводит параметры как часть URL (разделенные косой чертой) и, насколько мне известно, не поддерживает формат параметра GET.

Я не знаю, что делает класс Routes_Categories, но, работая с классами маршрутов ZF по умолчанию, попробуйте это:

$route = new Zend_Controller_Router_Route(
    '/:lang/:category/:age/:dep/:cat/:towns/*',
    array(
        "dep" => 0,
        "cat" => 0,
        "towns" => 0
    ),
    array(
        "dep" => "[0-9]+",
        "cat" => "[0-9]+"
    )
);
$router->addRoute('ajax_gallery', $route);

* поддерживает любые дополнительные именованные параметры после вашего маршрута. Вышеприведенное предполагает, что требуется lang, категория и возраст, а dep, cat и town необязательны. Имейте в виду, что если вы хотите установить cat, вы должны установить dep, иначе маршрут будет сбит с толку, какая именно переменная.

В вашем контроллере доступ к параметру страницы осуществляется через следующее, что устанавливает значение по умолчанию 1.

$page = $this->_getParam('page', 1);

Доступ к URL через AJAX как: http://localhost/en/gallery/2/9/27/1

Если вам нужен параметр страницы, используйте именованный параметр: http://localhost/en/gallery/2/9/27/1/page/2

Чтобы этот маршрут работал в вашей нумерации страниц, вам необходимо обновить элементы управления представлением пагинатора, чтобы использовать правильный маршрут. Смотри: http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.rendering.example-controls

Найдите код, по которому выводится URL, и добавьте имя маршрута в помощник просмотра URL. Поэтому замените код следующим образом:

<?php echo $this->url(array('page' => $this->previous)); ?>

С:

<?php echo $this->url(array('page' => $this->previous), 'ajax_gallery'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...