12

Cakephp ビューで paginator ヘルパーを使用すると、私の使用法に合わせてカスタマイズされた URL の一部が記憶されません。

例えば:

http://example.org/users/index/moderators/page:2/sort:name/dir:asc

ここでmoderatorsは、そのタイプでフィルタリングするのに役立つパラメーターです。ただし、ページネーターのリンクを押しても、このリンクは含まれません。

4

6 に答える 6

11

秘密は、この行をビューに追加することです:

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

(この質問と回答を作成したのは、よくある質問であり、覚えていないため回答を掘り下げなければならないためです。)

于 2008-09-29T08:52:18.520 に答える
4

上記の Alexander Morland の回答に追加すると、CakePHP 1.3 で構文が変更され、現在は次のようになっていることを覚えておく価値があります。

$this->Paginator->options(array('url' => $this->passedArgs));

これについては、CakePHP ブックのビューのページネーションセクションで詳しく説明されています。

于 2011-05-19T09:19:25.750 に答える
0

ここでのオプションは良いリードです... CakePHP のページネーションの詳細については、cakephp.org/view/166/Pagination-in-Views で確認することもできます。

于 2009-06-01T17:52:09.527 に答える
0

あなたは私を救いました!これは私を大いに助けました、ありがとう。

最初にポスト ($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;
}

以上です。ページングは​​カスタム クエリで動作します。:)

于 2008-12-28T21:38:59.147 に答える
0

$this->passedArgs は、ビューからこれを行うための推奨される方法です。

于 2008-12-09T17:03:05.067 に答える
-1

そのパラメータ「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 パラメータを失いました

代替技術はありますか?

于 2009-06-21T16:42:46.207 に答える