目录 搜索
基础 安装ThinkPHP5.1 开发规范 目录结构 配置基础 架构 路由 控制器 请求 架构总览 入口文件 URL访问 模块设计 命名空间 容器和依赖注入 Facade 钩子和行为 路由定义 变量规则 路由地址 闭包支持 路由参数 跨域请求 注解路由 路由分组 MISS路由 资源路由 快捷路由 路由别名 路由绑定 域名路由 URL生成 控制器定义 前置操作 跳转和重定向 空操作和空控制器 分层控制器 资源控制器 请求对象 输入变量 请求类型 HTTP头信息 伪静态 参数绑定 请求缓存 响应 响应输出 响应参数 重定向 数据库 模型 视图 连接数据库 查询数据 添加数据 更新数据 删除数据 查询表达式 链式操作 where table alias field strict limit page order group having join union distinct lock cache comment fetchSql force partition failException sequence 聚合查询 时间查询 高级查询 视图查询 JSON字段 子查询 原生查询 查询事件 事务操作 监听SQL 存储过程 数据集 分布式数据库 定义 新增 更新 删除 查询 JSON数据字段 获取器 修改器 自动时间戳 只读字段 软删除 类型转换 数据完成 查询范围 模型输出 事件 关联 一对一关联 一对多关联 远程一对多 多对多关联 多态关联 关联预载入 关联统计 关联输出 视图渲染 视图赋值 视图过滤 模板引擎 模板 变量输出 使用函数 运算符 原样输出 模板注释 模板布局 模板继承 包含文件 输出替换 标签库 内置标签 循环标签 比较标签 条件判断 资源文件加载 标签嵌套 原生PHP 定义标签 错误和日志 异常处理 日志处理 调试 验证 杂项 命令行 扩展库 安全和性能 附录 调试模式 性能调试 SQL调试 变量调试 远程调试 验证器 验证规则 错误信息 验证场景 路由验证 内置规则 独立验证 静态调用 表单令牌 缓存 Session Cookie 多语言 分页 上传 自动生成目录结构 创建类库文件 生成类库映射文件 清除缓存文件 生成配置缓存文件 生成数据表字段缓存 生成路由映射缓存 自定义指令 验证码 图像处理 Time 数据库迁移工具 Workerman MongoDb 单元测试 安全建议 优化建议 助手函数 升级指导 更新日志
文字

页面跳转

在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller类内置了两个跳转方法success和error,用于页面跳转提示。

使用方法很简单,举例如下:

<?php
namespace app\index\controller;

use app\index\model\User;
use think\Controller;

class Index extends Controller
{
    public function index()
    {
        $User   = new User; //实例化User对象
        $result = $User->save($data);
        if ($result) {
            //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
            $this->success('新增成功', 'User/list');
        } else {
            //错误页面的默认跳转页面是返回前一页,通常不需要设置
            $this->error('新增失败');
        }
    }
}

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

默认的等待时间都是3秒

success和error方法都可以对应的模板,默认的设置是两个方法对应的模板都是:

'thinkphp/tpl/dispatch_jump.tpl'

我们可以改变默认的模板:

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

也可以使用项目内部的模板文件

//默认错误跳转对应的模板文件
'dispatch_error_tmpl' => 'public/error',
//默认成功跳转对应的模板文件
'dispatch_success_tmpl' => 'public/success',

模板文件可以使用模板标签,并且可以使用下面的模板变量:

Y_K~G4~I2L4IPR1ZS}IB$W6.png

error方法会自动判断当前请求是否属于Ajax请求,如果属于Ajax请求则会自动转换为default_ajax_return配置的格式返回信息。 success在Ajax请求下不返回信息,需要开发者自行处理。

重定向

\think\Controller类的redirect方法可以实现页面的重定向功能。

redirect方法的参数用法和Url::build方法的用法一致(参考URL生成部分),例如:

//重定向到News模块的Category操作
$this->redirect('News/category', ['cate_id' => 2]);

上面的用法是跳转到News模块的category操作,重定向后会改变当前的URL地址。

或者直接重定向到一个指定的外部URL地址,例如:

//重定向到指定的URL地址 并且使用302
$this->redirect('http://thinkphp.cn/blog/2',302);

可以在重定向的时候通过session闪存数据传值,例如

$this->redirect('News/category', ['cate_id' => 2], 302, ['data' => 'hello']);

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

redirect('News/category')->remember();

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

redirect()->restore();

包括redirect、success和error方法在内的url地址参数不需要使用url方法,系统会自动调用url方法,否则会出现重复的url后缀。


上一篇: 下一篇: