http://域名/Admin如果没做模块映射,上图中的$this->redirect('Sign/login')方法一点问题没有,直接跳回登录页。U( ucfirst(MODULE_ALIAS ,'/控制器名/操作名')),或者$this->redirect( ucfirst(MODULE_ALIAS.'/控制器名/操作名') ),if($maps = C('URL_MODULE_MAP')) {
if($_module = array_search(strtolower($var[$varModule]),$maps)){
$var[$varModule] = $_module;
}
}经过跟踪,发现,如果开启了模块映射之后,if($maps = C('URL_MODULE_MAP')) 能进去,可是if($_module = array_search(strtolower($var[$varModule]),$maps))就进不去了。进过打印到页面上对比,发现 'URL_MODULE_MAP'=>array('admin'=>'Winsystem_Administrator_ManagementPlatform_Index'),而 if($_module = array_search(strtolower($var[$varModule]),$maps))中,strtolower($var[$varModule])变成了全部小写了,这里判断进不去,所以下面的$module还是原来的Winsystem_Administrator_ManagementPlatform_Index,而不是映射后的Admin 所以,斗胆改了一下,
if($maps = C('URL_MODULE_MAP')) {
if($_module = array_search($var[$varModule],$maps)){
$var[$varModule] = ucfirst($_module);
}
}这样小小改动,就完全可以实现直接使用U('控制器/方法') 和 $this->redirect('控制器/方法')去生成映射后的url了,不需要在家MODULE_ALIASURL_MODULE_MAP =>array('admin'=>'winsystem_administrator_managementplatform_index')这样全部小写就好了啊,但是我试过了,这样不行,会出现访问http://域名/Admin 报不存在的错,ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。