# 優雅的顯示錯誤信息
在 6.3 我們已經完成了控制器調用驗證器來達到驗證的目的,可是在控制器里如果直接輸出錯誤信息 `return $error` 會跳轉到一個新的空白頁面來單獨顯示,這樣的用戶體驗非常差,這次我們將在表單上使用 `flash 閃存` 進行一次性的錯誤信息展示.
## 閃存數據
`flash 閃存` 是 ThinkPHP 中 session 一節: http://www.hmoore.net/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);` 效果一樣.
詳細文檔請查看:
* http://www.hmoore.net/manual/thinkphp5_1/354117
* http://www.hmoore.net/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 小結