2013-01-17 98 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);

和你做。

相關問題