页面跳转
在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller
类内置了两个跳转方法success
和error
,用于页面跳转提示。
例如,登录功能,根据返回的登录结果,跳往不同的页面:
<?php
namespace app\index\controller;
use think\Controller; //引用Controller类
class Login extends Controller
{
//登录首页
public function index(){
return view();
}
//登录方法
public function loginCheck(){
//获取参数的封装方法
$user = params('username');
$pwd = params('password');
//验证登录信息(代码略)
...
if('结果'){
//成功跳转
//$this->success('信息提示','跳转地址','用户自定义数据','信息提示显示时长/秒','header信息');
$this->success('登录成功');
}else{
//失败跳转
//$this->success('信息提示','跳转地址','用户自定义数据','信息提示显示时长/秒','header信息');
$this->error('用户名或密码错误');
}
}
}
跳转地址是可选的:
success方法的默认跳转地址是$_SERVER["HTTP_REFERER"]
,获取当前链接的上一个连接的来源地址;
error方法的默认跳转地址是javascript:history.back(-1);返回上一页。
success
和error
方法都可以对应模板,模板可以用框架自带,也可自己设置:
默认模板
//默认模板
THINK_PATH . 'tpl/dispatch_jump.tpl';
//默认错误跳转对应的模板文件
'dispatch_error_tmpl' => APP_PATH . 'tpl/dispatch_jump.tpl',
//默认成功跳转对应的模板文件
'dispatch_success_tmpl' => APP_PATH . 'tpl/dispatch_jump.tpl',
自定义模板:
//默认错误跳转对应的模板文件
'dispatch_error_tmpl' => 'public/error',
//默认成功跳转对应的模板文件
'dispatch_success_tmpl' => 'public/success',
重定向:
\think\Controller
类的redirect
方法可以实现页面的重定向功能。
//重定向到News模块的Category操作
$this->redirect('News/category');
//带参数的重定向
$this->redirect('News/category', ['cate_id' => 2]);
重定向到外部链接:
//重定向到指定的URL地址 并且使用302
$this->redirect('http://thinkphp.cn/blog/2',302);
//重定向的时候通过session闪存数据传值
$this->redirect('News/category', ['cate_id' => 2], 302, ['data' => 'hello']);
//记住当前的URL后跳转
redirect('News/category')->remember();
//需要跳转到上次记住的URL
redirect()->restore();
注意:跳转和重定向的URL地址不需要再使用url方法进行生成,会自动调用,请注意避免,否则会导致多次生成而出现两个重复的URL后缀