如何在 laravel 中输入所有数组并在字段下方显示验证错误

Posted

技术标签:

【中文标题】如何在 laravel 中输入所有数组并在字段下方显示验证错误【英文标题】:How to all array inputs in laravel and displaying the validation error below of the fields 【发布时间】:2021-07-17 08:12:16 【问题描述】:

我的目标是当我点击提交按钮时,所有字段都将验证并在每个输入字段下方自动显示验证错误,现在当我尝试提交表单而不向字段中添加任何数据时,只有第一个输入字段在输入字段下方显示错误消息,其他字段只有在我提交表单然后单击输入字段后才会显示该消息。

我试图在这里查看解决方案,但不幸的是它对我不起作用。

How to validate array in Laravel? How do I validate an array of integers in Laravel Validate array of inputs in form in Laravel 5.7

我有一个看起来像这样的表单

<div class="form-group">
  <input type="text" name="ref_name[]"> 
</div>
<div class="form-group">
  <input type="text" name="ref_name[]"> 
</div
<div class="form-group">
  <input type="text" name="ref_name[]"> 
</div
<div class="form-group">
  <input type="text" name="ref_name[]"> 
</div
<div class="form-group">
  <input type="text" name="ref_name[]"> 
</div>

这是我的请求类的规则/代码

 'ref_name' => 'array',
 'ref_name.*' => 'required|distinct'

我在我的 laravel 项目中使用这个 https://packagist.org/packages/proengsoft/laravel-jsvalidation 作为我的验证插件。

我正在处理的 laravel 版本项目是 5.2

【问题讨论】:

第一件事是你不能对输入字段使用相同的“名称”属性。 【参考方案1】:

获取输入数组的第一个验证错误:

 $errors->first('ref_name.*') 

检查输入数组是否有错误:

@if($errors->has('ref_name.*'))
<h1>There is an error in your input array</h1>
<ul>
   @foreach($errors->get('ref_name.*') as $errors)
       @foreach($errors as $error)
           <li> $error </li>
       @endforeach
   @endforeach
</ul>
@endif

其他例子:

@error('ref_name.*')
<div class="alert alert-danger"> $message </div>
@enderror

你也可以得到错误:

echo $errors->first('ref_name.0');

【讨论】:

很抱歉,这些都不适合我,我使用的验证插件是packagist.org/packages/proengsoft/laravel-jsvalidation 表单验证时不需要刷新页面。如果我提交表单,它将自动验证表单并在输入字段下方显示所有错误,而无需刷新页面。 echo $errors->first('ref_name.0');试试这个我希望这对你有帮助@darth-dev-vader

以上是关于如何在 laravel 中输入所有数组并在字段下方显示验证错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 Ajax 传递对象数组并在控制器(Laravel)中作为输入

Laravel 验证 - 逗号分隔的字符串输入为数组

php Laravel - 在多个选择输入字段中串行的数组

Laravel - 如何将数组提取到变量并在刀片中使用它们

如何使用猫鼬复制字段数据并在同一文档的另一个字段中使用它?

Vuejs Laravel 验证输入数组