1. 使用助手函数

  1. <?php
  2. // 使用助手函数重定向’
  3. public function redirect1()
  4. {
  5. return redirect('http://www.thinkphp.cn');
  6. }

2. 重定向传参

站内重定向的话,可以进行URL组装。也可以进行其他方式传参

重定向后执行的方法:

  1. <?php
  2. // 跳转后执行的方法
  3. public function hello($name)
  4. {
  5. return '嘿嘿!' . $name;
  6. }

2.1 完整地址组装URL

控制器:

  1. <?php
  2. // 完整地址组装 URL
  3. public function redirect1()
  4. {
  5. return redirect('/test/res_info/hello/name/xs');
  6. }

postman 测试:
image.png

2.2 使用params方法配合

控制器:

  1. <?php
  2. // 配合 params()
  3. public function redirect2()
  4. {
  5. return redirect('/test/res_info/hello')->params(['name' => 'xs2']);
  6. }

postman 测试:
image.png

2.3 助手函数传参

控制器:

  1. <?php
  2. // 直接使用助手函数传参
  3. public function redirect3()
  4. {
  5. return redirect('/test/res_info/hello', ['name' => 'xs3']);
  6. }

postman 测试:
image.png

2.4 with方法闪存session

控制器:

  1. <?php
  2. public function hello2()
  3. {
  4. return session('name');
  5. }
  6. // 使用 with() 闪存数据到 session中
  7. public function redirect4()
  8. {
  9. return redirect('/test/res_info/hello2')->with(['name' => 'xs4']);
  10. }

3. 记住请求地址

使用remember方法记住重定向之前的请求地址。

我们第一次访问index操作的时候会重定向到hello操作并记住当前请求地址
然后操作完成后到restore方法,restore方法则会自动重定向到之前记住的请求地址,完成一次重定向的回归,回到原点!(再次刷新页面又可以继续执行)

  1. <?php
  2. namespace app\index\controller;
  3. class Index
  4. {
  5. public function index()
  6. {
  7. // 判断session完成标记是否存在
  8. if (session('?complete')) {
  9. // 删除session
  10. session('complete', null);
  11. return '重定向完成,回到原点!';
  12. } else {
  13. // 记住当前地址并重定向
  14. return redirect('hello')
  15. ->with('name', 'thinkphp')
  16. ->remember();
  17. }
  18. }
  19. public function hello()
  20. {
  21. $name = session('name');
  22. return 'hello,' . $name . '! <br/><a href="/index/index/restore">点击回到来源地址</a>';
  23. }
  24. public function restore()
  25. {
  26. // 设置session标记完成
  27. session('complete', true);
  28. // 跳回之前的来源地址
  29. return redirect()->restore();
  30. }
  31. }