0

アプリには、ページング用に次の2つのルートがあります。

Router::connect('/news', array(
    'controller' => 'posts', 'action' => 'index','page' => 1
));

Router::connect('/news/page/:page*', 
    array('controller' => 'posts', 'action' => 'index'), 
    array('named' => array('page' => '[\d]+'))
);

1ページ目は1/newsページ目、2ページ目は/news/page/2

ただし、1ページ目だけが表示されます...問題は何か考えはありますか?ありがとう

4

2 に答える 2

1

まず、アクションが通常のパラメーターを受け入れる場合、名前付きパラメーターを使用する必要はありません。

public function index($page = 1) {} // defaults to page 1

デフォルトでは、これにより次の URL が機能します。

/news ---------> NewsController::index(null); // defaults to page 1
/news/index/1 -> NewsController::index(1);
/news/index/2 -> NewsController::index(2);
etc.

次に、アクションではなくアクションにマップ/news/page/*するルートを追加します。indexpage

Router::connect('/news/page/*', array('controller' => 'news', 'action' => 'index'));

結果:

/news/page/2 -> NewsController::index(2);
于 2012-10-05T16:49:59.240 に答える
0

CakePHP には、データをフェッチするための PaginationComponent と、ビュー内のページネーション リンク用の PaginationHelper が組み込まれています。

http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html http://book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#PaginatorHelper

ページネーションのルートを設定する必要はありません。

カスタム ルートが必要な場合は、次のように変更します。

    Router::connect('/events', array('controller' => 'events', 'action' => 'index','page' => 1));
    Router::connect('/events/page/:page', array('controller' => 'events', 'action' => 'index'), array('page' => '[\d]+'));


    //find your data in params
    $this->request->params['page'];
于 2012-10-05T13:43:44.813 に答える