zoukankan      html  css  js  c++  java
  • Yii的分页方法收集

    1.

    DAO实现分页.
    public function actionList() {
            $criteria=new CDbCriteria();
    		$criteria->order=' id desc ';
    		$criteria->select='id,pattern,replacement';
    		//$criteria->addColumnCondition(array('com_id' => $user['com_id']));
    		$count = FilterWord::model()->count($criteria);
    		$pages=new CPagination($count);//实例化分页
    		$pages->pageSize=3;//每页显示几条信息
    $pages->setCurrentPage(Yii::app()->request->getParam('page',1)-1); //获取/设置当前页码,跳转到功能 $pages->applyLimit($criteria);//使用limit和offset $model=FilterWord::model()->findAll($criteria); $this->render('list',array( 'model'=>$model, 'pages'=>$pages, )); }

     

        <?php    
        
        $this->widget('CLinkPager',array(    
            'header'=>'',    
            'firstPageLabel' => '首页',    
            'lastPageLabel' => '末页',    
            'prevPageLabel' => '上一页',    
            'nextPageLabel' => '下一页',    
            'pages' => $pages,    
            'maxButtonCount'=>3        // 按钮数量
            )     
        );    
        ?>  跳转到:<form action="<?php echo Yii::app()->createUrl('filterword/list'); ?>" method="post">
    	<input type="text" name="page" />         //name=page
    	<input type="submit" value="提交" name="sub" />
    	</form>
    

      

     

    2.自定义样子小物件

    1)视图中把下面放在分页位置

     <?php
                        $this->widget('PagerWidget', array(
                            'header' => '',
                            'firstPageLabel' => '第一页',
                            'lastPageLabel' => '最末页',
                            'prevPageLabel' => '上一页',
                            'nextPageLabel' => '下一页',
                            'pages' => $pager,
                            'selectedPageCssClass' => 'current',
                            'maxButtonCount' => 0,
                            'htmlOptions' => array('class' => 'fl pagination', 'id' => 'pagination')
                            )
                        );
                        ?>
    

      

    		<style>          //加入css 给跳转按钮加背景图片
    		.but_page {
                      background: url(../images/but_page.png) no-repeat;
                      margin-bottom: -4px;
                       45px;
                      height: 21px;
                     border: none;
    				 }
    		</style>
    

    控制器里面大致不变:

    		$count = FilterWord::model()->count($criteria);
            $pageSize = (isset($_GET['pagesize']) && $_GET['pagesize']) ? $_GET['pagesize'] : 3;
            $pager = new CPagination($count);
            $pager->pageSize = $pageSize;
            $pager->applyLimit($criteria);      
    		$model=FilterWord::model()->findAll($criteria);
            $this->render('list',array(
    		'model'=>$model,
    		'pager' => $pager,
    		//'pages'=>$pages,
    
    		));
    

     最关键一步是:在component文件夹里面加入PagerWidget.php文件(其实说白了就是对CLinkPager的改进版)....

    <?php
    
    class PagerWidget extends CBasePager {
    
        const CSS_FIRST_PAGE='first';
        const CSS_LAST_PAGE='last';
        const CSS_PREVIOUS_PAGE='previous';
        const CSS_NEXT_PAGE='next';
        const CSS_INTERNAL_PAGE='page';
        const CSS_HIDDEN_PAGE='hidden';
        const CSS_SELECTED_PAGE='selected';
    
    
        public $firstPageCssClass=self::CSS_FIRST_PAGE;
    
        public $lastPageCssClass=self::CSS_LAST_PAGE;
    
        public $previousPageCssClass=self::CSS_PREVIOUS_PAGE;
        /**
         * @var string the CSS class for the next page button. Defaults to 'next'.
         * @since 1.1.11
         */
        public $nextPageCssClass=self::CSS_NEXT_PAGE;
    
        public $internalPageCssClass=self::CSS_INTERNAL_PAGE;
    
        public $hiddenPageCssClass=self::CSS_HIDDEN_PAGE;
    
        public $selectedPageCssClass=self::CSS_SELECTED_PAGE;
    
        public $maxButtonCount=10;
    
        public $nextPageLabel;
    
        public $prevPageLabel;
    
        public $firstPageLabel;
    
        public $lastPageLabel;
    
        public $header;
    
        public $footer='';
    
        public $cssFile;
    
        public $htmlOptions=array();
    
        public $redirect = true;                                          //新加入跳转到功能
        
        public function init()
        {
            if($this->nextPageLabel===null)
                $this->nextPageLabel=Yii::t('yii','Next >');
            if($this->prevPageLabel===null)
                $this->prevPageLabel=Yii::t('yii','< Previous');
            if($this->firstPageLabel===null)
                $this->firstPageLabel=Yii::t('yii','<< First');
            if($this->lastPageLabel===null)
                $this->lastPageLabel=Yii::t('yii','Last >>');
            if($this->header===null)
                $this->header=Yii::t('yii','Go to page: ');
    
            if(!isset($this->htmlOptions['id']))
                $this->htmlOptions['id']=$this->getId();
            if(!isset($this->htmlOptions['class']))
                $this->htmlOptions['class']='yiiPager';
        }
    
        public function run()
        {
            $buttons=$this->createPageButtons();
            if(empty($buttons))
                return;
       
            $redirect = '';                                                               //这一步最关键
            if ($this->redirect) {
                $currentPage = $this->getCurrentPage()+1;
                $redirect=$this->createRedirect($currentPage);
            }

    echo $this->header; echo CHtml::tag('div',$this->htmlOptions,implode("|",$buttons).$redirect); echo $this->footer; } protected function createPageButtons() { $pageCount=$this->getPageCount(); list($beginPage,$endPage)=$this->getPageRange(); $currentPage=$this->getCurrentPage(false); // currentPage is calculated in getPageRange() $buttons=array(); // first page $buttons[]=$this->createPageButton($this->firstPageLabel,0,$this->firstPageCssClass,$currentPage<=0,false); // prev page if(($page=$currentPage-1)<0) $page=0; $buttons[]=$this->createPageButton($this->prevPageLabel,$page,$this->previousPageCssClass,$currentPage<=0,false); // internal pages for($i=$beginPage;$i<=$endPage;++$i) $buttons[]=$this->createPageButton($i+1,$i,$this->internalPageCssClass,false,$i==$currentPage); // next page if(($page=$currentPage+1)>=$pageCount-1) $page=$pageCount-1; $buttons[]=$this->createPageButton($this->nextPageLabel,$page,$this->nextPageCssClass,$currentPage>=$pageCount-1,false); // last page $buttons[]=$this->createPageButton($this->lastPageLabel,$pageCount-1,$this->lastPageCssClass,$currentPage>=$pageCount-1,false); return $buttons; } protected function createPageButton($label,$page,$class,$hidden,$selected) { if($hidden || $selected) $class.=' '.($hidden ? $this->hiddenPageCssClass : $this->selectedPageCssClass); $link = $selected ? $page+1 : CHtml::link($label,$this->createPageUrl($page)); return '<span class="'.$class.'">'.$link.'</span>'; } protected function createRedirect($page) //跳转到的视图 { $html = ' <span>跳转到第 <input type="text" class="input_s" style="30px; height:20px; line-height:20px;" id="input_page_redirect-'.Yii::app()->controller->id.'-'.Yii::app()->controller->action->id.'" value="'.$page.'"/> 页 <input type="button" id="but_redirect" class="but_page"></span> <script type="text/javascript"> $(".but_page").click(function(){ var page = $("#input_page_redirect-'.Yii::app()->controller->id.'-'.Yii::app()->controller->action->id.'").val(); var link = "'.$this->createPageUrl(0).'";//window.location.href; var url = ""; if (link.indexOf("page=")>0) { url = link.replace(/page=d+/, "page="+page); } else { url = link+(link.indexOf("?")>0? "&page="+page : "?page="+page); } window.location = url; }); </script> '; return $html; } protected function getPageRange() { $currentPage=$this->getCurrentPage(); $pageCount=$this->getPageCount(); $beginPage=max(0, $currentPage-(int)($this->maxButtonCount/2)); if(($endPage=$beginPage+$this->maxButtonCount-1)>=$pageCount) { $endPage=$pageCount-1; $beginPage=max(0,$endPage-$this->maxButtonCount+1); } return array($beginPage,$endPage); } public function registerClientScript() { if($this->cssFile!==false) self::registerCssFile($this->cssFile); } public static function registerCssFile($url=null) { if($url===null) $url=CHtml::asset(Yii::getPathOfAlias('system.web.widgets.pagers.pager').'.css'); Yii::app()->getClientScript()->registerCssFile($url); } }

      

  • 相关阅读:
    网络安全之数字签名
    python爬取并分析淘宝商品信息
    循环与分支——python
    线性相关与线性无关
    linux之文件传输协议(FTP)与本地用户测试
    递归下降语法分析
    MySQL:索引
    一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
    Tomcat的部署、虚拟主机及优化
    二叉树深度
  • 原文地址:https://www.cnblogs.com/fengzhiqiangcaisangzi/p/3392715.html
Copyright © 2011-2022 走看看