Ich benutze Laravel 5.3. Mein erstes Laravel-Projekt/Lernerfahrung In meiner Blade-Datei verwende ich das folgende Snippet, um die Fehler unter einem Feld nach einer PUT oder POST-Anfrage anzuzeigen.
In diesem Fall wird das Datenbankfeld wird vorName genannt
@if ($errors->has('firstName'))
<span class="help-block">
<strong>{{ $errors->first('firstName') }}</strong>
</span>
@endif
Nun, da ich viele Felder haben, ich habe Wiederholungen diesen Block für jedes Feld halten. Ich sah die Laravel docs auf Blade-Vorlagen (Erweiterung Blade-Abschnitt) und dachte, ich
public function boot()
{
//
Blade::directive('showIfError', function($fieldName) {
if ($errors->has('$fieldName')) {
echo "<span class='help-block'>
<strong> $errors->first('$fieldName') </strong>
</span>";
}
});
}
die folgenden in der AppServiceProvider Klasse (AppServiceProvider .php) tun könnte, und verwenden Sie dann
@showIfError ('firstname')
aber kein Glück ... ich den Fehler ‚nicht definierte Variable: Fehler‘
Sieht aus wie die Fehlersammlung Laravel ist in dieser Ansicht Datei nicht zugänglich.
Schätzen Sie jede Hilfe. Vielen Dank.
Können Sie bitte hinzufügen, was Sie erreichen möchten? – Abrar
Ich möchte nicht den if (errors ...) -Block für jedes Feld in meinem Formular kopieren und einfügen.Stattdessen möchte ich eine Makro/Blade-Vorlage wie @showIfError ('fieldName') und die endgültige Ausgabe wird wie der oben angegebene Span-Block gerendert. –
Ich finde, dass View Caching die Ausgabe stört. Wenn ich alle Dateien im Speicher (Cache) Ordner lösche, kann ich dies mit der Sitzung ('Fehler') funktionieren, aber es funktioniert nur einmal! Wenn Sie das Formular erneut mit den gleichen Fehlern einreichen, wird keine Ausgabe erzeugt. Aus diesem Grund kann ich nicht vollständig testen, ob eine der Antworten funktioniert :-( Zusätzlich die Blade :: directive Funktion nimmt nicht 2 Argumente. –