# 优雅的显示错误信息
在 6.3 我们已经完成了控制器调用验证器来达到验证的目的,可是在控制器里如果直接输出错误信息 `return $error` 会跳转到一个新的空白页面来单独显示,这样的用户体验非常差,这次我们将在表单上使用 `flash 闪存` 进行一次性的错误信息展示.
## 闪存数据
`flash 闪存` 是 ThinkPHP 中 session 一节: https://www.kancloud.cn/manual/thinkphp5_1/354117 所提供的方法,`flash 闪存` 的数据在下次请求之前有效,意味着这个数据只能输出一次,很符合这一节所要实现的业务场景.
~~~~ php
public function save(Request $request)
{
$requestData = $request->post();
$result = $this->validate($requestData, 'app\user\validate\Auth');
if (true !== $result) {
return redirect('user/auth/create')->with('validate',$result);
} else {
dump($requestData);
}
}
~~~~
`return redirect('user/auth/create')->with('validate',$result);` 中 `redirect('user/auth/create')` 是跳转到对应的 `控制器/方法`
`with('validate',$result)` 则是 `redirect` 提供的一个快捷 `flash 闪存` 的方法,与 `Session::flash('validate',$result);` 效果一样.
详细文档请查看:
* https://www.kancloud.cn/manual/thinkphp5_1/354117
* https://www.kancloud.cn/manual/thinkphp5_1/353996
## 在前端中显示
非常简单的,我们只用在之前创建的注册页面 `resources\views\user\auth\create.blade.php` 中添加:
~~~~ html
<div class="panel-heading mb-3">
<h4>注册</h4>
</div>
++++
@if(session('validate'))
<div class="alert alert-warning" role="alert">
{{ session('validate') }}
</div>
@endif
++++
~~~~
这下就可以完美的显示出错误信息了.
- 第一章. 基础信息
- 1.1 序言
- 1.2 关于作者
- 1.3 本书源码
- 1.4 反馈纠错
- 1.5 安全指南
- 1.6 捐助作者
- 第二章. 开发环境布置
- 2.1 编辑器选用
- 2.2 命令行工具
- 2.3 开发环境搭建
- 2.4 浏览器选择
- 2.5 第一个应用
- 2.6 Git 工作流
- 第三章. 构建页面
- 3.1 章节说明
- 3.2 静态页面
- 3.3 Think 命令
- 3.4 小结
- 第四章. 优化页面
- 4.1 章节说明
- 4.2 样式美化
- 4.3 局部视图
- 4.4 路由链接
- 4.5 用户注册页面
- 4.6 集中视图
- 4.7 小结
- 第五章. 用户模型
- 5.1 章节说明
- 5.2 数据库迁移
- 5.3 查看数据表
- 5.4 模型文件
- 5.5 小结
- 第六章. 用户注册
- 6.1 章节说明
- 6.2 注册表单
- 6.3 用户数据验证
- 6.4 注册失败错误信息
- 6.5 注册成功
- 6.6 小结
- 第七章. 会话管理
- 7.1 章节说明
- 7.2 会话
- 7.3 用户登录
- 7.4 退出
- 7.5 小结
- 第八章. 用户 CRUD
- 8.1 章节说明
- 8.2 重构代码
- 8.3 更新用户
- 8.4 权限系统
- 8.5 列出所有用户
- 8.6 删除用户
- 8.7 访客模式
- 8.8 优化前端
- 8.9 小结
- 第九章. 微博 CRUD
- 9.1 章节说明
- 9.2 微博模型
- 9.3 显示微博
- 9.4 发布微博
- 9.5 微博数据流
- 9.6 删除微博
- 9.7 小结