2 ページ目に移動すると、ページネータがカスタム パラメータを覚えていないのはなぜですか?
-
02-07-2019 - |
質問
Cakephp ビューで Paginator ヘルパーを使用すると、私の用途に合わせてカスタマイズされた URL の部分が記憶されません。
例えば:
http://example.org/users/index/moderators/page:2/sort:name/dir:asc
ここ モデレータ は、そのタイプでフィルタリングするのに役立つパラメータです。ただし、ページネータ リンクを押しても、このリンクは含まれません。
解決
上記のAlexander Morlandの答えに追加するために、CakePHP 1.3で構文が変更され、現在は次のようになっていることを覚えておく価値があります。
$this->Paginator->options(array('url' => $this->passedArgs));
これについては、 CakePHPブックのビューのページネーションセクション。
他のヒント
秘密は、この行をビューに追加することです:
$ paginator-<!> gt; options(array( 'url' = <!> gt; $ this-<!> gt; passedArgs));
(この質問と回答はよく聞かれる質問なので作成しました。覚えていないので答えを掘り続けなければなりません。)
$ this-<!> gt; passedArgsは、ビューからこれを行うための推奨される方法です。
あなたは私を救いました!これはとても助かりました、ありがとう。
最初に post ($this->data) 経由で送信したパラメータをページング コンポーネントに渡す方法が必要でした。これにより、カスタム クエリは引き続きそれらのパラメータを使用できるようになります。
私がやったことは次のとおりです。
私の見解では、
$paginator->options(array('url'=>$this->data['Transaction']));
$paginator->prev('<< Previous ' のものの前。
これを行うと、「.../ページ:1/start_date:2000-01-01%2000:00:00/end_date:3000-01-01%2023:59:59/payments_recieveved:1 「
次に、コントローラーでパラメーターを取得して $this->data に配置するだけで、関数が通常どおり続行されるようになります。
foreach($this->params['named'] as $k=>$v)
{
/*
* set data as is normally expected
*/
$this->data['Transaction'][$k] = $v;
}
以上です。ページングはカスタム クエリで機能します。:)
ここでのオプションは良いリードです...また、cakephp.org / view / 166 / Pagination-in-ViewsでcakePHPのページネーションの詳細を確認できます
そのパラメーター '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 paramsを失いました
別のテクニックをお持ちですか?