Ich habe eine lange, komplexe Form mit mehreren 'bedingten' Felder - Feld B zeigt nur, wenn Feld A beispielsweise als 'Ja' markiert ist.Laravel 4: Zugriff auf Werte von Umleitung '-> withInput()'
Hier ist der HTML:
<div class="{{ $errors->has('happy') ? ' has-error' : false }}">
{{Form::label('happy', 'Are you happy?')}}
{{Form::select('happy', array('' => '--', 'Yes' => 'Yes', 'No' => 'No'),(!empty($input['happy']) ? $input['happy'] : null), ['class'=>'dependent']);}}
</div>
<div class="{{ !empty($input['happy']) && $input['happy'] == 'Yes' ? null : 'hidden'}} dependent" data-dependent-field="happy" data-dependent-value="Yes">
{{Form::label('second-field', 'Only asked if you\'re happy')}}
{{Form::textarea('second-field',!empty($input['second-field']) ? $input['second-field'] : null)}}
</div>
Das Problem ist, wenn das Formular abgeschickt wird, wenn es in dem zweiten Feld ein Validierungsfehler ist, wird der ursprüngliche Eingang nicht erkannt zu werden und die hidden
Klasse wird noch hinzugefügt zu der zweiten Reihe von Feldern.
Dieser Code funktioniert beim erneuten Laden des Formulars mit Daten zum Bearbeiten, aber nicht, wenn der Validierungsfehler gesendet wird. Die Code-Validierung sieht wie folgt aus:
if($validation->fails()){
return Redirect::back()->withInput()->withErrors($validation->errors())->with(['flash_message'=>'Please check your inputs again.']);
}
Ich vermute, ich bin nicht Referenzierung die Rückgabedaten korrekt, kann aber nicht herausfinden, wo ich falsch gehe.
Ich benutze bereits jQuery, um die Felder zu erweitern, wenn die Eingabe geändert wird, aber dies kümmert sich nicht um die Felder, wenn es nach einem Überprüfungsfehler neu geladen wird.
EDIT MEHR CLAIRTY:
Hier ist ein Beispiel. Wenn ich "Ja" wähle, aber die Antwort "Warum" leer lässt und es ein Pflichtfeld ist, zeigt Laravel das back()->withErrors()
Bit an, der Textbereich wird nicht auf dem Bildschirm angezeigt.
<div class="row {{ $errors->has('happy') ? ' has-error' : false }}">
{{Form::label('happy', 'Field Label', ['class'=>'span12'])}}
<div class="span3">
{{Form::select('happy', array('' => '--', 'Yes' => 'Yes', 'No' => 'No'),(!empty($input['happy']) ? $input['happy'] : null), ['class'=>'dependent']);}}
</div>
</div>
<div class="row">
<div class="span12">
<div class="{{ !empty($input['happy']) && $input['happy'] == 'No' ? null : 'hidden'}} dependent" data-dependent-field="happy" data-dependent-value="No">
<div {{ $errors->has('why-not-happy') ? ' has-error' : false }}">
{{Form::label('why-not-happy', 'Why aren\'nt you happy?')}}
{{Form::textarea('why-not-happy',!empty($input['why-not-happy']) ? $input['why-not-happy'] : null)}}
</div>
</div>
</div>
</div>
Können Sie mir die Funktion in der Steuerung zeigen, die die Formularwerte akzeptiert? – Vagabond