Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Display Validation Errors Next to Each Related Input Field in Laravel 5?

Tags:

Default solution is trivial:

@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

and I can include errors.blade.php anywhere.

Is there any way to extract each element and display it next to input field that holds the value that failed?

I assume that would require me to define a lot of conditional if statements next to each input, right?

How to sort this problem? Could you give me any examples?

Thanks.

like image 230
Matt Komarnicki Avatar asked Apr 27 '16 09:04

Matt Komarnicki


2 Answers

You can use something like this :

<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>
like image 116
zorx Avatar answered Sep 17 '22 15:09

zorx


@Zorx has given a right solution. But what if there are multiple errors and you want to display all of them at once.

According to the documentation you could use:

Retrieving All Error Messages For A Field

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

If you are validating an array form field, you may retrieve all of the messages for each of the array elements using the * character:

foreach ($errors->get('attachments.*') as $message) {
//
}

Retrieving All Error Messages For All Fields

foreach ($errors->all() as $message) {
    //
}
like image 35
Deepesh Thapa Avatar answered Sep 20 '22 15:09

Deepesh Thapa