在同一控制器中的两个不同动作的分页

时间:2013-01-17 22:25:45

标签: php cakephp pagination

index中有一个名为manage的动作和另一个名为PostsController的动作。我想为两者实现分页,并且我已经设置了这个类属性:

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

然后我在我的index操作中使用了分页,如下所示:$this->set('posts', $this->paginate('Post'));

这会生成如下网址:http://dev/posts/page:2,这很好。

但是,当我尝试在manage操作中使用分页时,就像我使用index$this->set('posts', $this->paginate('Post'));)一样,我的视图中的分页链接会重定向到上面的URL,而不是而不是管理行动。

基本上,Cake很混乱,因为我在同一个控制器中使用了两次分页,并且它们都重定向到同一个URL。如何确保manage操作的分页正常工作?

1 个答案:

答案 0 :(得分: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);

你已经完成了。