如何在Laravel 5中将验证错误显示在每个相关输入字段旁边?

21

默认解决方案很简单:

@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语句,对吗?如何解决这个问题?你能给我任何例子吗?

谢谢。

4个回答

30

你可以使用类似以下的内容:

<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>

完美运行。谢谢! - Matt Komarnicki
假设文本输入name存在多个错误,例如'name' => 'required|min:20',那么我们如何在此处显示多个错误行? - mapmalith
@mapmalith 这两个错误不可能同时出现。 - MohNj
2
可以这样做。foreach ($errors->get('email') as $message) { // } - Deepesh Thapa

5

@Zorx 给出了正确的解决方案。但是如果有多个错误,您想一次显示所有错误怎么办。

根据文档,您可以使用:

获取字段的所有错误消息

foreach ($errors->get('email') as $message) {
//
}

如果您正在验证一个数组表单字段,您可以使用*字符检索每个数组元素的所有消息。
foreach ($errors->get('attachments.*') as $message) {
//
}

检索所有字段的错误消息

foreach ($errors->all() as $message) {
    //
}

4

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

documentation


0

使用Bootstrap类和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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接