跳转
继承控制器基类 \think\Controller , 就可以使用两个常用的内置的方法,跳转方法 error、跳转方法 sucess
error()
路由:
<?php
Route::get('test/jump', 'test/Jump/index');
控制器:error
<?php
namespace app\test\controller;
use think\Controller;
class Jump extends Controller
{
public function index()
{
$flag = false;
if ($flag) {
// 设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
$this->success('新增成功!', '');
}else {
// 错误页面的默认跳转页面是返回前一页,通常不需要设置
$this->error('新增失败!');
}
}
}
浏览器效果:error
success()
修改一下:flag 改为 true
<?php
$flag = true;
浏览器效果:success
注意项
跳转地址是可选的,success方法的默认跳转地址是
$_SERVER["HTTP_REFERER"]
,error方法的默认跳转地址是javascript:history.back(-1);
。默认等待时间是 3s
success
和error
方法都可以对应的模板,默认的设置是两个方法对应的模板都是:'thinkphp/tpl/dispatch_jump.tpl'
我们可以改变默认的模板: ```php <?php
//默认错误跳转对应的模板文件 ‘dispatch_error_tmpl’ => ‘../application/tpl/dispatch_jump.tpl’, //默认成功跳转对应的模板文件 ‘dispatch_success_tmpl’ => ‘../application/tpl/dispatch_jump.tpl’,
5. 也可以使用项目内部的模板文件
```php
<?php
//默认错误跳转对应的模板文件
'dispatch_error_tmpl' => 'public/error',
//默认成功跳转对应的模板文件
'dispatch_success_tmpl' => 'public/success',
- error方法会自动判断当前请求是否属于Ajax请求,如果属于Ajax请求则会自动转换为default_ajax_return配置的格式返回信息。 success在Ajax请求下不返回信息,需要开发者自行处理。
重定向
同样的继承 控制器基类 \think\Controller 使用 redirect 方法,简单粗暴
重定向到外部 URL 地址
路由:
<?php
Route::get('test/redirect1', 'test/Redirect/test1');
控制器:
<?php
namespace app\test\controller;
use think\Controller;
class Redirect extends Controller
{
// 重定向到外部地址 URL 重定向
public function test1()
{
$this->redirect('https://www.kancloud.cn/manual/thinkphp5_1/353981');
}
// 重定向到操作行为 action
}
重定向到操作
路由:
<?php
Route::get('test/redirect2', 'test/Redirect/test2');
控制器:
<?php
// 重定向到操作行为 action
public function test2()
{
$this->redirect('Redirect/test3', ['cate_id' => 2], 302, ['data' => 'hello']);
}
// test3
public function test3(Request $req)
{
return 'test3';
}
浏览器 测试效果:
Session 闪存值的无问题
上面的 [‘data’ => ‘hello’] 这个参数是隐示的参数,我们需要通过 session 来获取
控制器:
<?php
// test3
public function test3(Request $req)
{
$cate_id = $req->param('cate_id');
// $data = $req->param('data');
$data = Session::get('data');
return json([
'cate_id' => $cate_id,
'data' => $data
]);
}
浏览器效果:
助手函数
使用redirect助手函数还可以实现更多的功能,例如可以记住当前的URL后跳转
<?php
redirect('News/category')->remember();
需要跳转到上次记住的URL的时候使用:
<?php
redirect()->restore();