ThinkPHP 跨控制器页面跳转 官方文档 未讲清楚

  摘要:在ThinkPHP学习过程中使用系统Controller类库提供的success()/error()跳转方法,官方《ThinkPHP3.2.3快速入门 》文档、《ThinkPHP3.2.3完全开发手册 》文档,都没有讲清楚跳转其它控制器/操作的原理,这里将从TP的源码讲解跳转过程,明确问题所在,以及怎样修正。

一 . 需要提前了解的东西

<a>标签的href属性
  href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 <a> 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

  举例解释:

a标签href属性实例 说明
href=’http://www.baidu.com 点击后直接跳转至百度首页
href=’test.html’ 跳转至文档当前目录下test.html文件
href=’javascript:history.back(-1);’ 运行JS代码,返回上页
href=’<?php echo($_SERVER[“HTTP_REFERER”]); ?>’ 返回操作前页面



  下面要讲到的TP的Controller类库的success/error方法其实是在模板中使用了第二种方法来跳转的。

二 . success/error方法问题所在、及修正

  先说问题出在哪里,当我在Index控制器里面希望跳转至Login控制器里面,按照官方文档的说法是这样做:
  $this->error(‘马上跳转!’,’Login/index’,1);
  可事实并不是这样
  URL会从
  http://localhost/ThinkPHP_Test/index.php/Home/Index/index
  跳转至
  http://localhost/ThinkPHP_Test/index.php/Home/Index/Login/index
  这显然不是我想要的,现将问题追踪的思路列举如下,并提出修正方法。

  上我自己的测试代码。

//IndexController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    
    public function index(){
    
        $this->display();
    }
    public function click(){
    
        $this->error('马上跳转!','../Login/index',1);
        //$this->redirect('Login/index');
    }
}
?>
//这是模板文件Index/index.html
<!DOCTYPE html>
<html 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值