Cakephp ビューで paginator ヘルパーを使用すると、私の使用法に合わせてカスタマイズされた URL の一部が記憶されません。
例えば:
http://example.org/users/index/moderators/page:2/sort:name/dir:asc
ここでmoderatorsは、そのタイプでフィルタリングするのに役立つパラメーターです。ただし、ページネーターのリンクを押しても、このリンクは含まれません。
Cakephp ビューで paginator ヘルパーを使用すると、私の使用法に合わせてカスタマイズされた URL の一部が記憶されません。
例えば:
http://example.org/users/index/moderators/page:2/sort:name/dir:asc
ここでmoderatorsは、そのタイプでフィルタリングするのに役立つパラメーターです。ただし、ページネーターのリンクを押しても、このリンクは含まれません。
秘密は、この行をビューに追加することです:
$paginator->options(array('url'=>$this->passedArgs));
(この質問と回答を作成したのは、よくある質問であり、覚えていないため回答を掘り下げなければならないためです。)
上記の Alexander Morland の回答に追加すると、CakePHP 1.3 で構文が変更され、現在は次のようになっていることを覚えておく価値があります。
$this->Paginator->options(array('url' => $this->passedArgs));
これについては、CakePHP ブックのビューのページネーションセクションで詳しく説明されています。
ここでのオプションは良いリードです... CakePHP のページネーションの詳細については、cakephp.org/view/166/Pagination-in-Views で確認することもできます。
あなたは私を救いました!これは私を大いに助けました、ありがとう。
最初にポスト ($this->data) 経由で送信したパラメーターをページング コンポーネントに渡す方法が必要だったので、カスタム クエリはそれらを引き続き使用します。
これが私がしたことです:
私の見解では
$paginator->options(array('url'=>$this->data['Transaction']));
$paginator->prev('<< Previous ' の前。
これを行うと、「 .../page:1/start_date:2000-01-01%2000:00:00/end_date:3000-01-01%2023:59:59/payments_recieved:1 のようなページネーターの次のリンクが作成されました"
次に、コントローラーでパラメーターを取得して $this->data に入れるだけで、関数は通常どおり続行されます。
foreach($this->params['named'] as $k=>$v)
{
/*
* set data as is normally expected
*/
$this->data['Transaction'][$k] = $v;
}
以上です。ページングはカスタム クエリで動作します。:)
$this->passedArgs は、ビューからこれを行うための推奨される方法です。
そのパラメータ「url」を使用すると、URLの文字列のページネーションの前に、好みの文字列のみを配置できます..
この手法を使用する場合:
$urlpagin = '?my_get1=1&my_get2=2';
$paginator->options = array('url'=>$urlpagin);
私が得るのは:
url/controller/action/?my_get1=1&my_get2=2/sort:.../...
Cake は get パラメータを失いました
代替技術はありますか?