YII+DWZ,修改开源作者的 DwzPager 和 dwz.navtab.js 以解决BUG

我标题中说的DwzPager是Yii扩展库中的DWZ 0.5提供的,
传送门:http://www.yiiframework.com/extension/dwzinterface/

但是,当搜索与显示页数同时非默认值时,会出现页数失效的BUG,例:
目前默认每页显示10条,然后我选择了每页显示5条,页面刷新生效,但当我进行搜索后,页面又回到每页10条的状态。

解决该问题请统一使用GET方法:

  1. controller中列表页改为以GET形式获取:

     if (isset($_GET['numPerPage'])) {
         Yii::app()->user->setState('numPerPage',(int)$_GET['numPerPage']);
         unset($_GET['numPerPage']);
     }  else {
         Yii::app()->user->setState('numPerPage',20);
     }
     if (isset($_GET['pageNum'])) {
         Yii::app()->user->setState('pageNum',(int)$_GET['pageNum']);
         unset($_GET['pageNum']);
     }  else {
         Yii::app()->user->setState('pageNum',0);
     }
    
  2. model中search中加入页码和每页容量:

     'pagination'=>array(
         'pagesize'=>Yii::app()->user->getState('numPerPage'),
         'currentPage'=>Yii::app()->user->getState('pageNum')-1,
     ),
    
  3. 修改navTabPageBreak的提交方式:

    顺藤摸瓜,在dwz.navtab.js中找到reload方法,把ajaxUrl的type修改为GET(原是POST)。
    修改完后当然要重新压缩混淆生成dwz.min.js

  4. 在使用ext.dwz.DwzGridView时,需指定分页类为DwzPager

     'pager'=>array('class'=>'ext.dwz.DwzPager')
    

经多次测试,一切正常

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏