Michael 的 Laravel 学习总结一:区分同一页面中不同表单的表单验证错误信息

同一个页面有多个表单时, 如何区分不同表单间的错误信息?

问题

我们通常使用 $errors->all() 方法可以获取表单验证的错误信息,但是该方法会获取此次请求中所有的错误信息。

@if($errors->any())
    <ul class="alert alert-danger">
        @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
@endif

例如一个页面中同时存在编辑项目和新增项目的表单,当你新增一个项目名称为空的项目时,提交之后会失败跳转回之前的页面,不仅在新增项目的表单中显示错误信息,编辑项目表单也会显示错误信息,这是不合逻辑的。

Michael 的 Laravel 学习总结:区分同一页面中不同表单的表单验证错误信息

Michael 的 Laravel 学习总结:区分同一页面中不同表单的表单验证错误信息

方法

可以通过在相应的表单请求验证文件中对 $errorBag 属性赋值来区分,该属性在 FormRequest.php 中的默认值为 default。
Michael 的 Laravel 学习总结:区分同一页面中不同表单的表单验证错误信息

通过对 POST 和 PATCH 两个方法来区分新增和编辑项目的路由,对 $errorBag 进行赋值, 不同项目的编辑之间进一步用路由参数 project 的值来区分。
$this->errorBag = 'create';
$this->errorBag = 'update-' . $this->route('project');
Michael 的 Laravel 学习总结:区分同一页面中不同表单的表单验证错误信息

然后在 blade 视图中通过 getBag() 方法,该方法接收 $errorBag 的值来获取不同表单对应的错误信息,first() 方法显示错误信息,第一个参数是提交项的 name 值,第二个参数是错误显示的格式。

Michael 的 Laravel 学习总结:区分同一页面中不同表单的表单验证错误信息

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!