Ecstore中finder”查看”下的分页实现

来源:互联网 发布:ubuntu hadoop2 编辑:程序博客网 时间:2024/06/07 19:50


我们经常在finder中使用”查看”列出改条数据的一些详细信息,那么如果列出的信息太多导致一个页面放不下了怎么办呢?今天我就给大家讲讲如何在finder“查看”中进行分页。

首先,我们需要在lib/finder/xxx.php中添加构建函数__construct(),进行一些参数设定:

class notebook_finder_item{    public function __construct($app)    {        $this->app = $app;        $this->render = app::get('notebook')->render();        $this->controller = app::get('notebook')->controller('admin_notebook');        $this->pagelimit=10;    }

然后,在“查看”的方法中做以下修改:

function detail_email($id){    if(!$id) return null;        $render = app::get('notebook')->render();$nPage = $_GET['detail_email'] ? $_GET['detail_email'] : 1;$singlepage = $_GET['singlepage'] ? $_GET['singlepage']:false;        $Oemail = kernel::single("notebook_mdl_item");        $items = $Oemail->db->select('select item_email from sdb_notebook_item  limit '.$this->pagelimit*($nPage-1).','.$this->pagelimit);        $this->render->pagedata['item'] =  $items;        if($_GET['page']) unset($_GET['page']);        $_GET['page'] = 'detail_email';        $count =$Oemail->count();        $render->pagedata['pager']=$a=$this->controller->pagination($nPage,$count,$_GET);        return $this->render->fetch('admin/itememail.html');    }


同时,我们要把detail_edit复制一份放到对应的controller中,添加如下函数:

class notebook_ctl_admin_notebook extends desktop_controller{    var $workground = 'notebook_ctl_admin_notebook';    var $pagelimit = 10;    public function __construct($app)    {        parent::__construct($app);        header("cache-control: no-store, no-cache, must-revalidate");    }function detail_email($id=null){        if(!$id) return null;        $render = $this->app->render();$nPage = $_GET['detail_email'] ? $_GET['detail_email'] : 1;        $Oemail = kernel::single("notebook_mdl_item");        $items = $Oemail->db->select('select item_email from sdb_notebook_item  limit '.$this->pagelimit*($nPage-1).','.$this->pagelimit);        //print_r($nPage);die;        $render->pagedata['item'] =  $items;        if($_GET['page']) unset($_GET['page']);        $_GET['page'] = 'detail_email';        $count =$Oemail->count();        $render->pagedata['pager']=$this->pagination($nPage,$count,$_GET);        return $render->fetch('admin/itememail.html');    }    public function pagination($current,$count,$get){ //本控制器公共分页函数        $app = app::get('notebook');        $render = $app->render();        $ui = new base_component_ui($this->app);        $link = 'index.php?app=notebook&ctl=admin_notebook&act=ajax_html&id='.$get['id'].'&finder_act='.$get['page'].'&'.$get['page'].'=%d';//echo $link;        $this->pagedata['pager'] = $ui->pager(array(                'current'=>$current,                'total'=>ceil($count/$this->pagelimit),                'link' =>$link,                ));        return $this->pagedata['pager'];    }    public function ajax_html()    {        $finder_act = $_GET['finder_act'];//print_r($_GET['id']);die;        $html = $this->$finder_act($_GET['id']);        echo $html;    }


最后一步,在html页面中要显示分页信息的地方,加入变量<{$pager}>,就OK了!



2 0