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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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