解决ThinkPHP3.1由于独立分组导致部分__ACTION__和U(“”)方法失效
来源:互联网 发布:恐怖黎明官方数据库 编辑:程序博客网 时间:2024/06/14 09:02
版权属于: Postbird - There I am , in the world more exciting!
原文地址: http://www.ptbird.cn/thinkphp-modules-index-action0u/
转载时必须以链接形式注明原始出处及本声明。
版权属于: Postbird - There I am , in the world more exciting!
原文地址: http://www.ptbird.cn/thinkphp-modules-index-action0u/
转载时必须以链接形式注明原始出处及本声明。
描述:
TP3.1使用独立分组,分组默认路径为/Modules/,在Modules下有Index和Admin两个文件夹,分别是两个模块,路径格式如下所示。
遇到的问题:
在/Index操作模块下, __ACTION__和U(“”)方法(请注意使用默认的U(“”),而分页类Page()中如果没有传递第四个参数,那么就会使用U(“”)产生当前的路径,从而生成分页的url)。
但是现在发现在Index模块下的__ACTION__方法和U(“”)方法生成的url均不对,少了一个./Index/(分组名),所以分页也出现了问题。
这个问题在Index/的操作下才会出现,但是Admin/下的操作则不会出现(目前我也不知道为什么,这个问题蛋疼了好久)。
在两个操作中使用的代码相同,生成的路径url对比如图:
【可以明显的看出,代码一样,但是Index下的路径少了一个Index分组,/Index/Index/pointlist/变成了 /Index/pointlist/】
【因为上述问题的存在,导致分页的时候,分页显示不正确】
解决问题:
Page类在引用的时候有四个参数分别如下,
/** * 架构函数 * @access public * @param array $totalRows 总的记录数 * @param array $listRows 每页显示记录数 * @param array $parameter 分页跳转的参数 */ public function __construct($totalRows,$listRows='',$parameter='',$url='')
如果我们不传递第四个URL参数,那么他会使用U(“”)方法生成一个路径,当然可以修改源代码,但是修改源代码以方便无法做到响应式的创造url,另外由于只有Index分组存在这个问题(我一直在想是不是因为两个Index重复所以导致了一个),所以使用另外一种解决方案。
创造一个全局函数,不能使用__ACTION__,也不能用__SELF__,都不起作用(我试过了),因此创建一个函数,全局性质的函数,模拟U(“”)生成路径。
函数的名字命名为 function UU(),函数只是返回一个正常的 __ACTION__应该有的(也就是 /Index/Index/pointlist),加上了分组名称。
在声明Page类的对象的时候,将第四个参数传递进去 即 $Page=new Page($count,20,”,UU()); 第三个参数不需要给的。
代码:
函数很简单,只有几行,但是这个发现问题和研究源代码的过程是很有意义的。
最近我写代码的注释真的是越来越多。
下面就是代码和注释,如果站点代码显示有问题,代码可以去gitosc查看
链接地址为:http://git.oschina.net/postbird/0yj641p7dnhc3woxk5em841.code.git
//解决系统由于使用了自定义分组产生的分页路径问题// 函数说明 模拟U("")方法生成正确的当前地址,并且最后执行操作/**powered by postbird *http://www.ptbird.cn*lience MIT*2016-10-24*//*问题描述: 自定义分组路径为 APP/Modules/Index/IndexAction.class.php 发现 __ACTION__,U(""), 两种形式均少一个Index 正常路径应为 xxx/Index/Index/pointlist (分组名/模块名/操作名) 发现分组名没了 //后期发现的问题 ;发现只有分组名称为Index,而操作是Index/Action/的时候 __ACTION__和U("")方法才会产生问题, 从而导致在分页过程中使用U("")方法出现问题*//** 主要用在 Page上的第四个参数 ------------------------------------------| $page=new Page($count,100,'',UU()); | ------------------------------------------ * array $totalRows 总的记录数 * array $listRows 每页显示记录数 * array $parameter 分页跳转的参数 * public function __construct($totalRows,$listRows='',$parameter='',$url='') */function UU(){//正确的__ACTION__应该为:// /二级目录(如果有)/index.php(如果文件)/Index(独立模块名 并加上GROUP_NAME)/Index(ACTION)/pointlist(操作)// 问题 :/sciplat/index.php/Index/pointlist 可以看出少了一个Index(模块名称 并加上GROUP_NAME)$str =__ACTION__;//去掉index.php,并加上GROUP_NAME$str =GROUP_NAME.substr($str,strpos($str,"index.php/")+strlen("index.php/")-1,strlen($str))."/p/";// dump($str);// 效果 string(22) "/Index/Index/pointlist"return $str;}
- 解决ThinkPHP3.1由于独立分组导致部分__ACTION__和U(“”)方法失效
- android 事件分发,解决由于listview中实时刷新,导致子view点击事件失效
- 解决Win10系统由于INF文件失效导致安卓MTP驱动安装失败的问题
- 揭秘ThinkPHP3.1.2版本的独立分组…
- 揭秘ThinkPHP3.1.2版本的独立分组功能
- CSS解决部分浏览器块状元素由于边框占用一定宽度导致换行的问题
- 解决Nginx下ThinkPHP框架中的U方法失效问题
- 【thinkphp3.x】thinkphp3.x中U方法生成url地址
- 【thinkphp3.x】thinkphp3.x中U方法生成url地址
- thinkphp3.2 U方法 使用与注意事项
- ThinkPHP3.2.3 U()方法的使用总结
- 由于编码方式导致CSS样式表失效
- mongodb 由于aggregate 分组过大 导致的bug
- eclipse部分快捷键失效解决
- 解决由于异步加载和getview的混用导致图片错位
- 【Android】 解决listview和BaseAdapter配合因加入button导致整个item点击失效
- BHOManager.dll--QTP的Browser对象部分方法失效问题的解决(zt)
- Ext Gantt 3.*解决任务部分鼠标滚轮失效问题的方法
- 前端-网站性能优化——CDN加速
- 啊哈报道探险(基础bfs)
- Lesson 8 Nehe
- Android权限动态管理工具类
- app的升级与更新
- 解决ThinkPHP3.1由于独立分组导致部分__ACTION__和U(“”)方法失效
- PHP中的运算符
- Android使用Handler防止内存泄漏
- 几个常用机器学习算法 - 决策树算法
- requirejs前端模块化
- linux 虚拟内存初识
- android 判断是否在主线程的方法
- ExpandableListView的使用
- Linux学习笔记之系统中的分区和文件系统