如何给控制器分页

时间:2014-04-29 07:24:43

标签: cakephp

控制器中的

public function home($id=null){

    $this->loadModel('Usermgmt.User');

    if(isset($id)){

        $groups=$this->User->findAllByuser_group_id($id);
        $this->set('groups', $groups);

    } else{
        echo 'no id';
        $users=$this->User->find('all');
        $this->set('users', $users);
    }
}

这里我的geeting值与user_group_id匹配并打印在这里我打算超过10个用户,但我需要在一个页面上打印只需要分页5并且需要分页如何在这里给出分页

查看

<?php


if (!empty($groups)) {
    // print_r($groups);
    $sl=0;
    foreach ($groups as $row1) {

        //print_r($row1);
        $sl++; ?>
        <div style="width:100%;display:inline-block;">

        <div style="float:left">

            <?php 
            //echo $row1['id'];
            echo $this->Html->link($this->Html->image('../files/user/photo/'.$row1 ['User']['photo_dir'].'/'.$row1 ['User']['photo'], array('width' => '180', 'height' => '180')),
                array('controller'=>'Profiles','action'=>'index',$row1['User']['id']),
                array('escape' => false));

            ?>

       </div>
       <div>
       <?php echo h($row1['User']['first_name'])." ".h($row1['User']['last_name'])."</br>";
            echo h($row1['User']['username'])."</br>";
            echo h($row1['User']['email'])."</br>";
            echo h($row1['User']['mobile'])."</br>";
            echo h($row1['UserGroup']['name'])."</br>";

        ?></div>
        <div style="clear:both;"></div>


    </div>  

    <?php } 
}?>

2 个答案:

答案 0 :(得分:2)

调用paginate

对此的等效paginate调用:

$groups=$this->User->findAllByuser_group_id($id);

(顺便说一下 - 应该是findAllByUserGroupId)是这样的:

$groups = $this->paginate('User', array('user_group_id' => $id));

更改默认选项

实现:

  

我只需要在一页上打印5个

修改控制器的paginate属性,例如:

class UsersController extends AppController {

    public $paginate = array('limit' => 5);

    function home($id = null) {
        ... 
        $conditions = array();
        if ($id) {
            $conditions['user_group_id'] = $id;
        }
        $groups = $this->paginate('User', $conditions);
        ...
    }
}

查看修改

在您看来,分页帮助程序和分页信息将通过调用paginate自动显示,如上所示。要获取分页链接,请使用the pagination helper

echo $this->Paginator->numbers();

有关使用分页的更多信息和示例,请参阅the documentation

答案 1 :(得分:0)

在cakephp中,可以使用cakephp的分页帮助程序进行分页

在控制器操作中,使用$ this-&gt; paginate。从Model返回所有参数,如字段,条件等,以数组格式,所以现在在控制器中你将写

$data = $this->ModelName->functionname();

$currentPage = isset($_REQUEST['currentpage']) ? $_REQUEST['currentpage'] : '';

$this->paginate = array(
            'fields' => $data['fields'],
            'conditions' => $data['conditions'],
            'order' => $data['order'],
            'page' => $currentPage,
            'limit' => 25
        );

$ currentPage是从$ _REQUEST [&#39;当前页&#39;]获取的;

最后将此数据传递给Paginate Helper

$data = $this->paginate('ModelName');

现在在视图中您将使用如下所示的分页功能

<?php echo $this->Paginator->prev('revious'); ?>
<?php echo $this->Paginator->numbers(); ?>
<?php echo $this->Paginator->next('Next'); ?>