CakePHP の Paginator に独自にパラメータを追加する

2010-9-26 00:16
このエントリーをはてなブックマークに追加

CakePHP で簡単にページング処理を実現してくれる Paginator ヘルパーは、ソート順やページ番号などのパラメータを URL に名前付き引数として渡す仕組みになっています。たとえば

http://localhost/hoge/foo/index/page:1/sort:name/direction:desc

のような URL を勝手に作ってくます。

この URL に独自の引数を加えたい場合などがあります。たとえば検索結果のページング処理などでは、次のように検索文字列を加えた URL を期待します。

http://localhost/hoge/foo/index/query:%E3%83%86%E3%82%B9%E3%83%88/page:1/sort:name/direction:desc

これを実現するためには、Paginator ヘルパーの options()メソッドに引数を渡します。この時に配列の形で渡さないとならないのではまりました。

$paginator->options(array(‘url’ => array(‘query’ => urlencode($query)));

これで $paginator->sort()$paginator->next() などのメソッドで、こちらが指定したパラメータが組み込まれるようになります。

ただし、手動で URL を組み立てるために $paginator->url() メソッドを呼んだ場合は、options() で指定した値が無視されてしまうようです。(CakePHP 1.3.3 で確認。)

url() で使う場合は引数にこれらの値を渡す必要があります。

$url = $paginator->url('query' => urlencode($query));

このときは 'url' => array() は必要ありません。ここも知らないとハマりますね。

  • ブックマーク : アクセス: 17,298回
  • カテゴリー : PHP
  • キーワード :

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

34 queries. HTML convert time: 0.074 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン