CakePHPを使っていると、ヘルパーなどのリファレンスを解説本では簡単に説明を済ませているところに当たります。CakePHPのマニュアルをよく見れば書いているのですが(ただし、日本語サイトは遅れている場合があり)。
例えばhtmlヘルパーのlinkの説明ところ。Webとか解説本には、
HtmlHelper::link($title, $url = null, $htmlAttributes = array(), $confirmMessage = false, $escapeTitle = true)
$title : タイトル
$url : リンク先URL
$htmlAttributes : 属性
$confirmMessage : 確認メッセージの有無
$escapeTitle : エスケープの有無
などど書いていています。$urlは、”http://testtest.jp/”のようなURLをテキストで設定するようにサンプルに書かれています。
しかし、CakePHPではURLの指定は、
array('controller' => コントローラ名, 'action'=>アクション名)
のように連想配列で指定可能なのです。もし、管理者サイトでは、
array(Configure::read('Routing.admin') => true,'controller' => コントローラ名, 'action'=>アクション名)
のようにすればいいのです。アクション名には’admin_’とかは付ける必要はありません。
CakePHPを使いこなしている人なら当たり前かもしれませんが。一応、自分の覚え書きです。
あとlinkのURLに関連して、ここのサイトに書かれていますが(感謝!)、IDなどの検索条件のパラメータをpaginatorヘルパーに含めるには、 Veiwで$paginator->optionsにurlをキーにした連想配列を設定すればいいようです。Veiwで$paginator->optionsのurlに設定してしまうと、View内のpaginatorヘルパーでsort()などのリンク先には、’val1/val2’が勝手に付けてくれます。
もし、このようにパラメータが付けてアクセスしたときに、
http://testtest.jp/コントローラー/アクション/val1/val2/
ビューの最初で
<?php
$paginator->options = array(
'url' => $this->passedArgs
);
?>
とすると、passedArgs変数は、パラメータを持っていますので、ビュー内の
<?php echo $paginator->sort('title');?>
は、
http://testtest.jp/コントローラー/アクション/val1/val2/page:1/sort:title/direction:asc
というようなパラメータを付けたリンクを作ってくれます。
“CakePHP URLの指定 - 例えば、htmlヘルパーのlinkのパラメータの話し” への2件のフィードバック
passedArgs変数というのがあったんですね。
pagenatorのURLにパラメーターが付いてくれないので困っていましたが、この記事のおかげで助かりましたよ!
[…] リンクを押してページ替えすると、検索条件を忘れてしまうのです。検索条件の引き継ぎはここでも書きましたが、getパラメータの処理を書いてあげなくてはなりません。セレクトメニ […]