2 ページ目に移動すると、ページネータがカスタム パラメータを覚えていないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/147995

  •  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を失いました

別のテクニックをお持ちですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top