[CakePHP]カスタムRouting利用時にViewでPaginatorのURLを設定する方法

[CakePHP 2.2.3]

カスタムRoutingを使用している時にPaginatorのURLが思ったように出力されなくてかなりハマることは良くありますよね!

この辺は公式マニュアルに書いてなかった気がしますので尚更です。(実は書いてあったらスミマセン)

例えば、以下のようにRoutingが設定されていた場合、

Config/routes.php

[php]
Router::connect(‘/:hoge1/:hoge2’, array(‘controller’ => ‘articles’, ‘action’ => ‘index’),
array(
‘hoge1’ => ‘[a-zA-Z]+’
‘hoge2’ => ‘[0-9]+’,
));
[/php]

ViewのPaginatorでは、以下のように設定します。

View/Articles/index.ctp

[php]
<?=$this->Paginator->numbers(array(
‘url’ => array(‘controller’ => ‘articles’, ‘action’ => ‘index’, ‘hoge1’ => ‘foo’, ‘hoge2’ => 123)
))?>
[/php]

または、Paginationのリンクを出力する前に以下のように設定しておくことも出来ます。

[php]
<?php $this->Paginator->options(array(
‘url’ => array(‘controller’ => ‘articles’, ‘action’ => ‘index’, ‘hoge1’ => ‘foo’, ‘hoge2’ => 123)
))?>
[/php]

ポイントは、しっかりとパラメータを入力してあげることですね。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.