web-dev-qa-db-fra.com

Comment afficher les erreurs de validation à côté de chaque champ de saisie associé dans Laravel 5?

La solution par défaut est triviale:

@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

et je peux inclure errors.blade.php n'importe où.

Existe-t-il un moyen d'extraire chaque élément et de l'afficher à côté du champ de saisie contenant la valeur qui a échoué?

Je suppose que cela m'obligerait à définir un grand nombre d'instructions conditionnelles if à côté de chaque entrée, non?

Comment trier ce problème? Pourriez-vous me donner des exemples?

Merci.

17
Matt Komarnicki

Vous pouvez utiliser quelque chose comme ceci:

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

@Zorx a donné une bonne solution. Mais que se passe-t-il s'il y a plusieurs erreurs et que vous souhaitez les afficher toutes en même temps.

Selon la documentation que vous pourriez utiliser:

Récupération de tous les messages d'erreur pour un champ

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

Si vous validez un champ de formulaire de tableau, vous pouvez récupérer tous les messages pour chacun des éléments du tableau à l'aide du caractère *:

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

Récupération de tous les messages d'erreur pour tous les champs

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