跳转

继承控制器基类 \think\Controller , 就可以使用两个常用的内置的方法,跳转方法 error、跳转方法 sucess

error()

路由:

  1. <?php
  2. Route::get('test/jump', 'test/Jump/index');

控制器:error

  1. <?php
  2. namespace app\test\controller;
  3. use think\Controller;
  4. class Jump extends Controller
  5. {
  6. public function index()
  7. {
  8. $flag = false;
  9. if ($flag) {
  10. // 设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
  11. $this->success('新增成功!', '');
  12. }else {
  13. // 错误页面的默认跳转页面是返回前一页,通常不需要设置
  14. $this->error('新增失败!');
  15. }
  16. }
  17. }

浏览器效果:error
image.png

success()

修改一下:flag 改为 true

  1. <?php
  2. $flag = true;

浏览器效果:success
image.png

注意项

  1. 跳转地址是可选的,success方法的默认跳转地址是$_SERVER["HTTP_REFERER"],error方法的默认跳转地址是javascript:history.back(-1);

  2. 默认等待时间是 3s

  3. successerror方法都可以对应的模板,默认的设置是两个方法对应的模板都是:'thinkphp/tpl/dispatch_jump.tpl'

  4. 我们可以改变默认的模板: ```php <?php

//默认错误跳转对应的模板文件 ‘dispatch_error_tmpl’ => ‘../application/tpl/dispatch_jump.tpl’, //默认成功跳转对应的模板文件 ‘dispatch_success_tmpl’ => ‘../application/tpl/dispatch_jump.tpl’,

  1. 5. 也可以使用项目内部的模板文件
  2. ```php
  3. <?php
  4. //默认错误跳转对应的模板文件
  5. 'dispatch_error_tmpl' => 'public/error',
  6. //默认成功跳转对应的模板文件
  7. 'dispatch_success_tmpl' => 'public/success',
  1. error方法会自动判断当前请求是否属于Ajax请求,如果属于Ajax请求则会自动转换为default_ajax_return配置的格式返回信息。 success在Ajax请求下不返回信息,需要开发者自行处理。

重定向

同样的继承 控制器基类 \think\Controller 使用 redirect 方法,简单粗暴

重定向到外部 URL 地址

路由:

  1. <?php
  2. Route::get('test/redirect1', 'test/Redirect/test1');

控制器:

  1. <?php
  2. namespace app\test\controller;
  3. use think\Controller;
  4. class Redirect extends Controller
  5. {
  6. // 重定向到外部地址 URL 重定向
  7. public function test1()
  8. {
  9. $this->redirect('https://www.kancloud.cn/manual/thinkphp5_1/353981');
  10. }
  11. // 重定向到操作行为 action
  12. }

重定向到操作

路由:

  1. <?php
  2. Route::get('test/redirect2', 'test/Redirect/test2');

控制器:

  1. <?php
  2. // 重定向到操作行为 action
  3. public function test2()
  4. {
  5. $this->redirect('Redirect/test3', ['cate_id' => 2], 302, ['data' => 'hello']);
  6. }
  7. // test3
  8. public function test3(Request $req)
  9. {
  10. return 'test3';
  11. }

浏览器 测试效果:
image.png

Session 闪存值的无问题

上面的 [‘data’ => ‘hello’] 这个参数是隐示的参数,我们需要通过 session 来获取

控制器:

  1. <?php
  2. // test3
  3. public function test3(Request $req)
  4. {
  5. $cate_id = $req->param('cate_id');
  6. // $data = $req->param('data');
  7. $data = Session::get('data');
  8. return json([
  9. 'cate_id' => $cate_id,
  10. 'data' => $data
  11. ]);
  12. }

浏览器效果:
image.png

助手函数

使用redirect助手函数还可以实现更多的功能,例如可以记住当前的URL后跳转

  1. <?php
  2. redirect('News/category')->remember();

需要跳转到上次记住的URL的时候使用:

  1. <?php
  2. redirect()->restore();