laravel分页修改默认的page参数
2017-11-07 15:47
1816 查看
首先我们都是使用paginate()这个方法生成分页,在view页面中使用render()这个方法生成分页链接的,感觉laravel太好用了,都不用自己写分页及一些链接的处理。当我在页面增加两个列表的分页的时候问题出现了,我点击其中一个列表的分页链接的时候,另一个列表的数据都发生了变化,原来是都是用了同一个page,比如你的链接是user?page=1,两个列表都是用了这个page命名就会发生冲突。于是乎我网上搜索了一番,找到了可以使用setPageName()方法为不同的列表分页设定自己的pagename,我非常高兴的设定了这个值,也很有效的改变了这个原始的page为两个不同的命名,例如:user?upage=1和user?ipage=1,我想这下问题该解决了吧!但是要命的来了,点击分页链接的时候内容并没有变化,怎么修改了之后还是没有用……
我于是沿着paginate()方法查询到在vender文件夹中找vender\laravel\framework\src\Illuminate\Pagination\Paginator目录下的Paginator.php,在里面看看各个方法之间的关系,寻源而上发现$pageName这个变量在LengthAwarePaginator.php中已被setPageName()方法所改变,但是为何url改变而内容却没有任何变化,我想那应该是url链接的数据不正确。
接着我发现![LengthAwarePaginator][1].php中找到构造函数中options数组中存在pageName参数,这不就是我设定的pageName变量么,我与是打印出来看看,打印出来还是page这个命名,于是我再向上查找,找到了Eloquent/Builder.php,看到里面有paginate这个方法,瞬间恍然大悟,setPageName()这个方法并没有改变查询数据的pagename,所以setPageName()只是在子类中的设置pagename的变化,而向上一层真正生成的分页中没有作用,于是我就在控制器中将paginate()方法增加两个参数,将第三个参数写成将要输入的pagename,再回到页面看看效果,结果大功告成!
修改方法:
例如:你使用的是User::paginate(2),这里只有一个参数,Builder.php里面有4个参数,第二个参数这里不做解释,第三个参数就是我们自定义的pagename,于是修改为User::paginate(2, ‘[*]’, ‘uPage’);这就会将默认的page修改为uPage,并且页面的链接也正确!
总结:一般paginate传一个参数,即指定每页的显示条数,页码这个参数名叫 ‘page’ ,当传第三个参数时可以去修改。
作者:金星show
链接:http://www.jianshu.com/p/89e90438aaaf
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我于是沿着paginate()方法查询到在vender文件夹中找vender\laravel\framework\src\Illuminate\Pagination\Paginator目录下的Paginator.php,在里面看看各个方法之间的关系,寻源而上发现$pageName这个变量在LengthAwarePaginator.php中已被setPageName()方法所改变,但是为何url改变而内容却没有任何变化,我想那应该是url链接的数据不正确。
接着我发现![LengthAwarePaginator][1].php中找到构造函数中options数组中存在pageName参数,这不就是我设定的pageName变量么,我与是打印出来看看,打印出来还是page这个命名,于是我再向上查找,找到了Eloquent/Builder.php,看到里面有paginate这个方法,瞬间恍然大悟,setPageName()这个方法并没有改变查询数据的pagename,所以setPageName()只是在子类中的设置pagename的变化,而向上一层真正生成的分页中没有作用,于是我就在控制器中将paginate()方法增加两个参数,将第三个参数写成将要输入的pagename,再回到页面看看效果,结果大功告成!
修改方法:
例如:你使用的是User::paginate(2),这里只有一个参数,Builder.php里面有4个参数,第二个参数这里不做解释,第三个参数就是我们自定义的pagename,于是修改为User::paginate(2, ‘[*]’, ‘uPage’);这就会将默认的page修改为uPage,并且页面的链接也正确!
总结:一般paginate传一个参数,即指定每页的显示条数,页码这个参数名叫 ‘page’ ,当传第三个参数时可以去修改。
作者:金星show
链接:http://www.jianshu.com/p/89e90438aaaf
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 修改laravel默认分页排版
- 帝国cms7.0修改默认搜索模版中的分页[!--show.page--]
- 菜鸟的报错日常:PageInfo分页缺少必要的参数:pagenum
- 织梦(DEDECMS)官方默认flash幻灯片参数修改的方法
- 修改MVC默认的pageBaseType以添加功能
- 移植u-boot-2012.04----修改默认参数、烧写yaffs文件
- easyUI datagrid 分页参数page和rows
- 修改默认的undo_retention参数设置
- ElasticSearch默认的分页参数 size
- Jquery EasyUI dataGrid 修改默认分页大小
- 织梦(DEDECMS)官方默认flash幻灯片参数修改的方法
- laravel原生分页并带参数的搜索分页
- ViewPager切换Page之修改默认滑动偏移量
- 修改DataGrid控件的默认的分页样式
- 可以自己修改的,并且datalist和gridview都可以用的分页代码,可以自己添加参数
- Struts2获取easyUI datagrid 分页参数page和rows
- 修改默认的undo_retention参数设置
- {dede:pagebreak/} 文章分页样式的修改
- MTK校准默认参数修改(2010-3-29 16:16)
- 修改默认的undo_retention参数设置