2013-09-11 5 views
0

Я использую помощник pagination CakePHP с настраиваемым маршрутом, однако он, кажется, игнорирует номер страницы. Я считаю, что это происходит потому, что названный параметр page не существует в запросе, который я верифицированный с помощью debug($this->request->params);:Невозможно установить именованный параметр с помощью CakePHP

array(
    'plugin' => null, 
    'controller' => 'things', 
    'action' => 'index', 
    'named' => array(), 
    'pass' => array(), 
    'page' => '2' 
) 

Как вы можете видеть, это положить page за пределы named массива. Это маршрут, я определил для пользовательских постраничной URL-адресов:

Router::connect('/things/:page', array('controller' => 'skins', 'action' => 'index'), array('page' => '[0-9]+')); 

Очевидно, это означает, что независимо от того, что номер страницы я нажимаю на только первые результаты показывают.

Как изменить маршрут, чтобы правильно вставить страницу в именованный массив параметров? Я бы предпочел не напрямую изменять $this->request->params['named'] с контроллера напрямую.

ответ

1

Согласно удивительной документации в CakePHP книге:

Если вы планируете использовать пользовательский именованные аргументы с маршрутом, вы должен сделать маршрутизатор знает об этом с помощью маршрутизатора :: connectNamed () функция. Так что если вы хотите выше маршрут, чтобы соответствовать URLs как /повара/some_action/тип: повар мы делаем:

Router::connectNamed(array('type')); 
Router::connect(
    '/cooks/:action/*', array('controller' => 'users') 
); 

http://book.cakephp.org/2.0/en/development/routing.html#routes-configuration

+0

Я попробовал, что уже с 'Router :: connectNamed (массив ('page')); ', однако это не повлияло. Кроме того, эта часть документов также говорит, что вы можете настроить ее по принципу маршрута, что я и сделал в фрагменте кода в моем исходном сообщении. –

+0

Код, который у вас есть в вашем исходном сообщении, не имеет ничего общего с именованными параметрами - это просто повторное выражение для другого (неименованного) параметра. – Dave

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