3.2.2的U函数不支持多入口的URL生成

浏览:1133 发布日期:2014/05/12
3.2.1 - 致命 - 已关闭
如果使用多入口admin.php进入网站后台,并在admin.php中绑定模块(BIND_MODULE)。然后使用U函数生成的URL的入口总是index.php文件。
因为U函数中最后组装URL的代码如下


比如我希望U('Index/action') 返回 admin.php/Index/action,而实际返回index.php/Index/action 这指向的是Home模块的控制器与操作。

从U的源码中可以看出,当定义了BIND_MODULE,组装URL的时候会省略当前的模块名。而域名部分使用的是__APP__,不会定位到admin.php,所以这样会导致组装出错。

我的建议: 简单的改法是域名部分改为__SELF__,也就是上面的代码中__APP__ 替换为__SELF__,时间有限只能想到这个方法。

实际编码过程中,可以将define('BIND_MODULE', 'Admin');改为$_GET['m'] = 'Admin',避免组装的时候忽略模块名; 然后在config.php中开启多模块ALLOW_MODULE_LIST;最后使用U函数时记得传入模块名 U('Admin/Index/action');这样最后生成的url会以index.php为入口,是一个有效的链接。不得不说的是,这样虽然可以,但是很麻烦,而且也违背了多入口的概念。
评论()
后面还有条评论,点击查看>>