0

の中に、というアクションとindex、という別のアクションがmanageありPostsControllerます。両方にページ付けを実装したいので、次のクラス属性を設定しました。

public $paginate = array(
    'limit' => 10,
    'order' => array(
        'Post.created' => 'desc'
    )
);

次に、次のindexようにアクションでページネーションを使用しています。$this->set('posts', $this->paginate('Post'));

これにより、次のようなURLになりますhttp://dev/posts/page:2。これで問題ありません。

ただし、( )でmanage行ったようにアクションでページ付けを使用しようとすると、ビューのページ付けリンクは、管理アクションではなく、上記のURLにリダイレクトされます。index$this->set('posts', $this->paginate('Post'));

基本的に、同じコントローラーで2回ページネーションを使用していて、両方を同じURLにリダイレクトしているため、Cakeは混乱しています。manageアクションのページネーションが正しく機能することを確認するにはどうすればよいですか?

4

1 に答える 1

2

次のことを行います。

<?php
class PostsController extends AppController
{
    var $name = 'Posts';
    public $paginate = array
    (
        'limit' => 10,
        'order' => array
        (
            'Post.created' => 'desc'
        )
    );

    function index()
    {
        $this->Post->recursive = 0;
        $this->set('posts', $this->paginate('Post'));
    }

    function manage()
    {
        $this->Post->recursive = 0;
        $this->set('posts', $this->paginate('Post'));
    }
}

以下に定義されているように、ビューファイルに変更を加えます。

index.ctp

$options = array
(
    'url'=> array
    (
        'controller' => 'posts', 
        'action' => 'index'
     )
);
$paginator->options($options);

manage.ctp

$options = array
(
    'url'=> array
    (
        'controller' => 'posts', 
        'action' => 'manage'
     )
);
$paginator->options($options);

そして、これで完了です。

于 2013-01-18T04:06:37.123 に答える