2013-01-17 40 views
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行动,就像我与index$this->set('posts', $this->paginate('Post'));),在我看来,分页链接重定向到以上网址,而不是管理行为。

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

+0

我看不到你的代码如何处理重定向...你能否发布与重定向相关的代码。如果index var = manage;那么你也不能在条件前添加一个变量。如果管理VAR =索引,然后只是重定向到变量? –

+0

当分页帮助程序在视图中使用时,它会输出页码,当您单击它们时,会将用户重定向到相关页面。我的代码适用于我想要的“索引”操作,问题是当我单击“manage”操作视图上的分页编号时,它会将用户重定向到与“索引”操作相同的页面,而不是'管理'行动。这是我的控制器代码:http://pastebin.com/uz5USqYJ –

回答

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);

和你做。

相关问题