5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

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/

ビューの最初で

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

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

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

は、

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

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

著:山田祥寛
¥3,366 (2024/11/21 16:43時点 | Amazon調べ)
著:松浦 健一郎, 著:司 ゆき
¥2,574 (2024/11/21 16:43時点 | Amazon調べ)
著:谷藤賢一, 著:徳丸浩
¥2,750 (2024/11/21 16:43時点 | Amazon調べ)

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

  1. Yuta Iharaのアバター
    Yuta Ihara

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

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

  2. […] リンクを押してページ替えすると、検索条件を忘れてしまうのです。検索条件の引き継ぎはここでも書きましたが、getパラメータの処理を書いてあげなくてはなりません。セレクトメニ […]