Blade中的Laravel验证错误:显示相同消息的多种形式

时间:2020-01-19 13:04:11

标签: laravel

我认为我有多种形式。当我在一种表单上收到验证错误时,它将在所有表单上显示验证错误消息。我该如何更新,以便验证错误仅显示在导致验证错误的表单上?谢谢。

查看:

<form method="post" action="/post/comment/{{ $post->alt_id }}" class="form-inline">
    <input type="text" class="form-control{{ $errors->has('comment') ? ' is-invalid' : '' }}" id="comment" name="comment" placeholder="Add a comment...">
    @if ($errors->has('comment'))
        <p class="invalid-feedback">{{ $errors->first('comment') }}</p>
    @endif
    <button type="submit" class="btn btn-primary">Submit</button>
    <input type="hidden" name="_token" value="{{ Session::token() }}"/>
</form>

1 个答案:

答案 0 :(得分:0)

您可以使用named error bags

return redirect('previous_page')
            ->withErrors($validator, 'first_form');

然后您可以从$errors变量访问刀片中的命名错误包:

{{ $errors->first_form->first('comment') }}

如果您使用的是Laravel> = 6.10,则validateWithBag方法可能会帮助您:

$request->validateWithBag('first_form', [
    'title' => ['required', 'unique:posts', 'max:255'],
    'comment' => ['required'],
]);

使用@error指令,第一个arg是一个属性,第二个arg是已命名的bag:

<input
    id="comment"
    type="text"
    class="@error('comment', 'first_form') is-invalid @enderror"
>

@error('comment', 'first_form')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror