Skip to main content

优雅地显示错误信息

提示

6.3 数据验证 我们已经完成了控制器调用验证器来达到验证的目的,可是在控制器里如果直接输出错误信息 return $error 会跳转到一个新的空白页面来单独显示,这样的用户体验非常差,这次我们将在表单上使用 flash 闪存 进行一次性的错误信息展示。

闪存数据

flash 闪存ThinkPHP5.1 Session 所提供的方法,flash 闪存 的数据在下次请求之前有效,意味着这个数据只能输出一次,很符合这一节所要实现的业务场景。

application\user\controller\Auth.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); 效果一样。

详细文档请查看:

在前端中显示

非常简单的,我们只用在之前创建的注册页面 resources\views\user\auth\create.blade.php 中添加:

resources\views\user\auth\create.blade.php
<div class="panel-heading mb-3">
<h4>注册</h4>
</div>
++++ @if(session('validate'))
<div class="alert alert-warning" role="alert">
{{ session('validate') }}
</div>
@endif ++++

这下就可以完美的显示出错误信息了。

@2023 HeroUI & Singularity Robotics PTE. LTD. All rights reserved.