javascript - 验证多输入 laravel
问题描述
我有多个输入,我可以通过单击按钮 (+) 在任何地方克隆 div 来添加更多输入。
我需要它,以便当我保存表单并且数据为空时重定向回所有 div 和输入。例如:添加五个输入,当点击提交和重定向时,我需要显示这个输入(五个输入)。
这是我的示例代码:
<form class="m-form m-form--fit m-form--label-align-right" id="m_form_1" method="post">
<div class="m-portlet__body">
@if(is_array(old('name')) && count(old('name')) > 0)
<div id="countriesContainer">
@foreach(old('name') as $key => $item)
<div class="form-group m-form__group row countries">
<label class="col-form-label col-lg-2">{{ trans('general.language') }}</label>
<div class="col-2">
<select class="form-control m-bootstrap-select m_selectpicker" data-live-search="true" name="language[]">
<option value="">{{ trans('general.select_item') }}</option>
@foreach($language as $row)
<option value="{{ $row->locale }}" {{ old('language')[$item] == $row->locale ? 'selected' : '' }}>{{ $row->name }}</option>
@endforeach
</select>
</div>
<div class="col-lg-6">
<input type='text' class="form-control m-input lang" name="name" value="{{ old('name')[$item] }}" placeholder="{{ trans('countries.name') }}"/>
</div>
<div class="col-2">
<a href="javascript:;" class="btn btn-brand m-btn m-btn--custom add">
<i class="fa fa-plus"></i>
</a>
<a href="javascript:;" class="btn btn-danger m-btn m-btn--custom remove">
<i class="fa fa-minus"></i>
</a>
</div>
</div>
@endforeach
</div>
@else
<div id="countriesContainer">
<div class="form-group m-form__group row countries">
<label class="col-form-label col-lg-2">{{ trans('general.language') }}</label>
<div class="col-2">
<select class="form-control m-bootstrap-select m_selectpicker" data-live-search="true" name="language">
<option value="">{{ trans('general.select_item') }}</option>
@foreach($language as $row)
<option value="{{ $row->locale }}" {{ old('language') == $row->locale ? 'selected' : '' }}>{{ $row->name }}</option>
@endforeach
</select>
</div>
<div class="col-lg-6">
<input type='text' class="form-control m-input lang" name="name" placeholder="{{ trans('countries.name') }}"/>
</div>
<div class="col-2">
<a href="javascript:;" class="btn btn-brand m-btn m-btn--custom add">
<i class="fa fa-plus"></i>
</a>
<a href="javascript:;" class="btn btn-danger m-btn m-btn--custom remove">
<i class="fa fa-minus"></i>
</a>
</div>
</div>
</div>
@endif
</div>
</form>
这是我的控制器代码:
$language = $request->get('language');
$name = $request->get('name');
$status = (int)$request->get('status');
$validator = Validator::make($request->all(), [
"name.*" => "required",
]);
解决方案
<input name="name" ...
应该是<input name="name[]" ...
如果存在多个同名的输入字段,它应该是一个数组。
要接收旧值,您需要 循环索引。不是$item
所以应该是
<input name="name[]" value="{{ old('name')[$loop->index] }}" ...
推荐阅读
- jenkins - Jenkins 中多个自由样式作业的单个电子邮件通知
- ios - UINavigationBar 上的多行标签
- php - 用 preg_replace 中的动态变量替换
- javascript - 如何调用 $(document).ready(function() {…}); 从另一个文件 JS
- android - Android 通知渠道。为组禁用声音
- macos - macOS:从内部监控应用程序 CPU 负载
- spring - Spring Cloud Security JWT:使用配置服务器/密钥轮换分发公钥
- android - 安卓浏览器进入全屏时的分辨率
- django - Auth0 - Django 和石墨烯
- javascript - 如何在 HTML 文件中使用 observable?