关于ThinkPHP中$this->redirect的疑问。

在TP1.5版本中使用

1 $this->redirect('login','Public');

便可以实现跳转到当前项目的 PublicAction 中的 login 方法路径。

在TP2.0中方法发生了变动,按手册上的方法应该这样进行跳转:

1 $this->redirect('Public/login');

但是最后的URL地址却会变成:

http://xxx.xxx.xxx/admin.php/Admin_App//Public/login

但我实际需要跳转的地址是

http://xxx.xxx.xxx/admin.php/Public/login

也就说,默认的$this->redirect方法会在url中加上项目名。有人建议说重写一下TP中的redirect方法,这比较麻烦了。

这时想到了用redirect()函数,而不使用$this中的方法,然后想到了两个解决办法:

123 $this->redirect('../../Public/login'); //方法1 redirect('admin.php/Public/login') //方法2

其中第一个办法虽然能解决,但因为路径层数比较复杂,而我也一直比较避免用 ../到url路径中。

第二个办法虽然能解决,但是并不是完善,因为在设计中我考虑到以后可以任意的改变 admin.php这个后台入口文件的文件名。

尝试了redirect()函数中并不能使用TP自带的替换变量后,突然想到加一个变量赋值的笨办法:

12 $login_url = __APP__.'/Public/login'; //跳转路径 redirect($login_url);

这样就算把问题解决了。

TP中不少的函数和模板替换值 比如之前遇到的 ../Publc 都会自动加上项目名称,当时本来项目名想作为title的一个替换量,但在使用 ../Publc 时路径会变成 http://xxx.xxx.xxx/项目名/Tpl/Public/ 所以当时不得不把项目名换成了和文件目录名相同。

这点我觉得完全没必要了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值