Anzeigen der Fehlermeldungen in Laravel, nachdem sie vom Controller umgeleitet wurden

Lesezeit: 4 Minuten

Benutzer-Avatar
SA__

Wie kann ich die Validierungsnachricht in der Ansicht anzeigen, die in Laravel umgeleitet wird?

Hier ist meine Funktion in einem Controller

public function registeruser()
{
    $firstname = Input::get('firstname');
    $lastname = Input::get('lastname');
    $data  =  Input::except(array('_token')) ;
    $rule  =  array(
                'firstname'       => 'required',
                'lastname'         => 'required',
                   ) ;
    $validator = Validator::make($data,$rule);
    if ($validator->fails())
    {
    $messages = $validator->messages();
    return Redirect::to("https://stackoverflow.com/")->with('message', 'Register Failed');
    }
    else
    {
    DB::insert('insert into user (firstname, lastname) values (?, ?)',
                                array($firstname, $lastname));
    return Redirect::to("https://stackoverflow.com/")->with('message', 'Register Success');
    }
    }

Ich weiß, dass der unten angegebene Code ein schlechter Versuch ist, aber wie kann ich ihn beheben und was fehlt mir

@if($errors->has())
    @foreach ($errors->all() as $error)
        <div>{{ $error }}</div>
    @endforeach
@endif

Update: Und wie zeige ich die Fehlermeldungen in der Nähe der einzelnen Felder an

  • Sie müssen die Fehlermeldungen zurückgeben, so etwas wie return Redirect::to('/')->withErrors($validator);

    – Vucko

    4. November 2014 um 10:39 Uhr


  • Danke, es hat mir geholfen

    – SA__

    4. November 2014 um 11:23 Uhr

  • @SA__ Wie haben Sie den eingegebenen Wert in jedem Feld nach der Validierungsumleitung gespeichert?

    Benutzer5621153

    15. März 2016 um 12:57 Uhr

Benutzer-Avatar
Sushant Aryal

Laravel 4

Wenn die Validierung fehlschlägt, kehren Sie mit den Validierungsfehlern zurück.

if($validator->fails()) {
    return Redirect::back()->withErrors($validator);
}

Sie können den Fehler in Ihrer Ansicht mit abfangen

@if($errors->any())
    {{ implode('', $errors->all('<div>:message</div>')) }}
@endif

AKTUALISIEREN

Um Fehler unter jedem Feld anzuzeigen, können Sie so vorgehen.

<input type="text" name="firstname">
@if($errors->has('firstname'))
    <div class="error">{{ $errors->first('firstname') }}</div>
@endif

Für einen besseren Anzeigestil mit CSS.

Sie können auf die Dokumente verweisen hier.

AKTUALISIERUNG 2

Um alle Fehler auf einmal anzuzeigen

@if($errors->any())
    {!! implode('', $errors->all('<div>:message</div>')) !!}
@endif

Um Fehler unter jedem Feld anzuzeigen.

@error('firstname')
    <div class="error">{{ $message }}</div>
@enderror

  • wie kann ich den eingegebenen Wert nach der Validierung halten?

    Benutzer5621153

    15. März 2016 um 12:44 Uhr

  • <input type="text" name="firstname" value="{{ old('firstname') }}"> oder verwenden Sie den Formularhelfer, der den Wert nach einem Validierungsfehler automatisch enthält.

    – Sushant Aryal

    17. März 2016 um 12:00 Uhr

  • Beachten Sie, dass $errors->first('firstname') zeigt nur die erste Nachricht für das angegebene Feld an. Möglicherweise haben Sie mehrere Fehler; erhalten Sie sie als Array zum Durchlaufen wie folgt: $errors->get('firstname')

    – Jason

    22. März 2016 um 16:25 Uhr


  • Für Leute, die Bootstrap verwenden, hier ist Ihr Code-Snippet: @if($errors->any()) {!! implode(”, $errors->all(‘

    ‘)) !!} @endif

    – Phönix

    25. April 2020 um 17:49 Uhr


Wenn Sie die Ansicht von demselben Controller laden möchten, auf dem Sie sich befinden:

if ($validator->fails()) {
    return self::index($request)->withErrors($validator->errors());
}

Und wenn Sie schnell alle Fehler anzeigen möchten, aber etwas mehr Kontrolle haben möchten:

 @if ($errors->any())
     @foreach ($errors->all() as $error)
         <div>{{$error}}</div>
     @endforeach
 @endif

@if ($errors->has('category'))
    <span class="error">{{ $errors->first('category') }}</span>
@endif

  • Bitte geben Sie einige Details an.

    – Syeda Zunaira

    8. April 2015 um 7:27 Uhr

  • Bitte geben Sie in Ihrer Antwort auf Zusammenfassungen zusätzliche Details dazu an, was Ihr Code tut.

    – Popeye

    8. April 2015 um 7:54 Uhr

Benutzer-Avatar
Ali Raza

Damit es gut aussieht, können Sie die kleine Bootstrap-Hilfe verwenden

@if(count($errors) > 0 )
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
    <ul class="p-0 m-0" style="list-style: none;">
        @foreach($errors->all() as $error)
        <li>{{$error}}</li>
        @endforeach
    </ul>
</div>
@endif

Eine neue Laravel-Blade-Error-Richtlinie kommt hinzu Laravel 5.8.13

// Before
@if ($errors->has('email'))
    <span>{{ $errors->first('email') }}</span>
@endif

// After:
@error('email')
    <span>{{ $message }}</span>
@enderror

Benutzer-Avatar
Enver

Sie können wie folgt verwenden, um mit HTML-Tags zu drucken:

@if($errors->any())
    {!! implode('', $errors->all('<div>:message</div>')) !!}
@endif

Benutzer-Avatar
4b0

$validator = Validator::make($request->all(), [ 'email' => 'required|email', 'password' => 'required', ]);

if ($validator->fails()) { return $validator->errors(); }

  • Großartig, dass Sie helfen. Können Sie den weniger erfahrenen Kollegen bitte erklären, warum und wie Ihr Code das Problem löst. Um den Beitrag prägnanter und lesbarer zu machen, verwenden Sie die richtige Formatierung, die stackoverflow vorschlägt: stackoverflow.com/editing-help

    – Leopold

    1. Dezember 2019 um 15:38 Uhr

1350810cookie-checkAnzeigen der Fehlermeldungen in Laravel, nachdem sie vom Controller umgeleitet wurden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy