CakePHP URLの指定 - 例えば、htmlヘルパーのlinkのパラメータ

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/

ビューの最初で

<?
$paginator->options = array(
'url' => $this->passedArgs
);
?>

とすると、passedArgs変数は、パラメータを持っていますので、ビュー内の

<?php echo $paginator->sort('title');?>

は、

http://testtest.jp/コントローラー/アクション/val1/val2/page:1/sort:title/direction:asc

というようなパラメータを付けたリンクを作ってくれます。

投稿者:

avatar

ando

50過ぎてもプログラマーの気持ちを忘れない。

「CakePHP URLの指定 - 例えば、htmlヘルパーのlinkのパラメータ」への2件のフィードバック

  1. passedArgs変数というのがあったんですね。

    pagenatorのURLにパラメーターが付いてくれないので困っていましたが、この記事のおかげで助かりましたよ!

コメントは停止中です。