2015-03-02 37 views
1

我使用cakephp 2.5.6,我想在我的视图文件中显示数组。我尝试将CakePHP默认分页与此数组,但它不起作用。这里是我的示例代码如何将cakephp默认分页数组

---'my_pages' controller----- 

public function view(){ 
    //some other code 
    $resultArray = $this->MyPages->getResults(); 
    $resultArray = $this->Paginator->paginate('resultArray'); 
    $this->set(compact('resultArray','rightPanel')); 
} 

和我的视图文件

----- 'view.ctp' file ------ 
//some other code 

foreach ($resultArray as $result){ 
    echo $result['subject']; 
    echo $result['body']; 
} 

在我的情况下,该$resultArray有近百元素,我想把分页此页面上。那么是否有可能在这种情况下使用cakephp默认分页?谢谢:)

回答

1

您需要执行cakephp自定义分页。

CakePHP中使用两种方法来管理分页查询,是PAGINATE和paginateCount,它们分别用于获取页面数据,总 记录数。要使用您的自定义 查询进行分页工作,我们需要在我们的 型号文件中实现上述两个功能,您希望将分页功能用于自定义查询。 你也可以在你的行为文件中实现。让我们看看我们如何可以 有这个实现。

//in MyPages model add 

public function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) {  
    $recursive = -1; 

    // Mandatory to have 
    $this->useTable = false; 
    $sql = ''; 

    $sql .= "SELECT * FROM table_name limit "; 

    // Adding LIMIT Clause 
    $sql .= (($page - 1) * $limit) . ', ' . $limit; 

    $results = $this->query($sql); 

    return $results; 
} 
public function paginateCount($conditions = null, $recursive = 0, $extra = array()) { 

    $sql = ''; 

    $sql .= "SELECT * FROM table_name"; 

    $this->recursive = $recursive; 

    $results = $this->query($sql); 

    return count($results); 
} 

你的控制器文件看起来象下面这样:

---'my_pages' controller----- 

public function view(){ 
    // Do not forgot to set this, not sure why 
    $this->MyPages->recursive = 0; 
    // Setting up paging parameters 
    $this->paginate = array('MyPages'=>array('limit'=>5)); 
    // Getting paginated result based on page # 
    $this->set('resultArray', $this->paginate('MyPages')); 
} 

注:MyPages应该我的页面,因为CakePHP的型号名称应为单数。

您的视图文件看起来象下面这样:

----- 'view.ctp' file ------ 
//some other code 

foreach ($resultArray as $result){ 
    echo $result['subject']; 
    echo $result['body']; 
} 

你也可以阅读Pagination with Custom Queries in CakePHP

+0

谢谢:),当我把你的答案它的工作。但鉴于每页页面项目不能正常工作,我尝试了很多方法,但似乎不工作。使用调试器显示分页限制和其他变量是正确的。但当前页面显示9.不知道为什么是这样,你有一个想法,为什么它的行为是这样的。 – indrarajw 2015-03-05 13:34:43