默认解决方案很简单:
@if (count($errors) > 0)
<ul id="login-validation-errors" class="validation-errors">
@foreach ($errors->all() as $error)
<li class="validation-error-item">{{ $error }}</li>
@endforeach
</ul>
@endif
我可以在任何地方包含errors.blade.php
。
有没有办法提取每个元素并将其显示在保存失败值的输入字段旁边?
我认为这需要我在每个输入旁边定义很多条件if
语句,对吧?
如何解决这个问题?你能给我举个例子吗?
谢谢。
你可以使用这样的东西:
<div class="form-group {{ $errors->has('name') ? 'has-error' : ''}}">
<label for="name" class="col-sm-3 control-label">Name: </label>
<div class="col-sm-6">
<input class="form-control" required="required" name="name" type="text" id="name">
{!! $errors->first('name', '<p class="help-block">:message</p>') !!}
</div>
</div>
@Zorx给出了正确的解决方案。但是,如果有多个错误并且您希望一次显示所有错误怎么办。
根据您可以使用的文档:
检索字段的所有错误消息
foreach ($errors->get('email') as $message) {
//
}
如果要验证数组表单字段,则可以使用 * 字符检索每个数组元素的所有消息:
foreach ($errors->get('attachments.*') as $message) {
//
}
检索所有字段的所有错误消息
foreach ($errors->all() as $message) {
//
}
Laravel在版本6和7中引入了@error指令
<input id="title" type="text" name="title" class="@error('title') is-invalid @enderror">
@error('title')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
文档
使用引导类和 Laravel 的 $errors
指令验证单个错误消息和红色输入边框
带有红色边框颜色的输入字段
<input type="text" name="fullName" class="form-control {{($errors->first('fullName') ? 'is-invalid' : '')}}" value="{{old('fullName');}}">
//Or
<input type="text" name="fullName" class="form-control @error('fullName') is-invalid @enderror" value="{{old('fullName');}}">
单个验证错误消息
@error('fullName') <div class="alert alert-danger">{{ $message }}</div> @enderror