我使用的是cakehp2.5.6,我想在视图文件中显示数组。我试着用这个数组设置cakepp默认分页,但没有成功。这是我的示例代码
---'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
有将近一百个元素,我想在这个页面上进行分页。那么在这种情况下可以使用cakepp默认分页吗??感谢:)
您需要实现cakehp自定义分页。
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应该是MyPage,因为Cakephp模型名称应该是单数。
您的视图文件如下所示:
----- 'view.ctp' file ------
//some other code
foreach ($resultArray as $result){
echo $result['subject'];
echo $result['body'];
}
此外,您还可以阅读CakePHP中的自定义查询分页