Michael 的 Laravel 学习总结一:区分同一页面中不同表单的表单验证错误信息
同一个页面有多个表单时, 如何区分不同表单间的错误信息?
问题
我们通常使用 $errors->all()
方法可以获取表单验证的错误信息,但是该方法会获取此次请求中所有的错误信息。
@if($errors->any())
<ul class="alert alert-danger">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
例如一个页面中同时存在编辑项目和新增项目的表单,当你新增一个项目名称为空的项目时,提交之后会失败跳转回之前的页面,不仅在新增项目的表单中显示错误信息,编辑项目表单也会显示错误信息,这是不合逻辑的。
方法
可以通过在相应的表单请求验证文件中对 $errorBag
属性赋值来区分,该属性在 FormRequest.php 中的默认值为 default。
通过对 POST 和 PATCH 两个方法来区分新增和编辑项目的路由,对 $errorBag 进行赋值, 不同项目的编辑之间进一步用路由参数 project 的值来区分。$this->errorBag = 'create';
$this->errorBag = 'update-' . $this->route('project');
然后在 blade 视图中通过 getBag()
方法,该方法接收 $errorBag
的值来获取不同表单对应的错误信息,first()
方法显示错误信息,第一个参数是提交项的 name 值,第二个参数是错误显示的格式。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: