1

私はmoviesというプラグインを作成し、カスタムルートを使用しました。ページネーション制限を「5」として使用しました。

最初のページは問題ありませんが、次または数字をクリックすると。それらは機能しません。

URL:something.com/movieslist/2

my Plugin/Movies/Config/routes.php

Router::connect('/movieslist', array('plugin' => 'Movies', 'controller' => 'Movies', 'action' => 'index'));
Router::connect('/movieslist/:page', array('plugin' => 'Movies', 'controller' => 'Movies', 'action' => 'index'));

my action code: Plugin/Movies/Controller/MoviesController.php

public function index() {
        $this->Movie->recursive = 0;
        $this->paginate = array('limit'=>5);
        $this->set('movies', $this->paginate());
    }

my view file code: Plugin/Movies/View/Movies/index.ctp

ケーキベイクコンソールからの同じもの。ここでは変更はありません。

並べ替えでも機能しません:(私は多くの場所で自分の問題を検索することに階層化されています:(

以前にリンク自体でエラーが発生していましたが、このページを見た後でこれを修正しました: CakePHPカスタムルートページネーション

リンクは修正されていますが、リンクは機能しません。plsは反対票を投じません、私は長い間苦労しています。

cakephp 2.0バージョンを使用しています。

4

1 に答える 1

0

最初のステップとして、最初の一致が見つかった後に Cakephp が停止するため、ルーター ルールの順序を入れ替えます。「/movieslist/:page」は URL とページを一致させますが、名前付きパラメーターに対してのみ一致させますpage。これがないと、"/movielist/2" という形式の URL は、通常のパラメーター "2" を持つ "/movielist" へのリンクとして解釈される可能性があるため、最初のルーター ルールがトリガーされます。

それがうまくいかない場合は、いつでも名前付きpageパラメーターを手動で設定できます。paginate設定されているかどうかを確認するだけですが、cakephp が URL から自動的に判断したか、自分で判断したかは気にしません。

public function index($myPage=1) {
    $this->Movie->recursive = 0;
    $this->paginate = array('limit'=>5);
    $this->params["page"] = $myPage;
    $this->set('movies', $this->paginate());
}
于 2012-08-29T10:57:48.440 に答える