2017-01-25 6 views
0

Wenn use_shipping deaktiviert ist und der Benutzer den Wert nicht eingegeben hat in shipping_note - Validierung hätte bestanden werden müssen, aber es ist fehlgeschlagen?Laravel Validierung mit Checkbox

<input type="hidden" name="use_shipping" value="0"> 
<input type="checkbox" name="use_shipping" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked="checked"' : '' }}> 

Text

<input type="text" name="shipping_note" value=""> 

In Laravel Anfrage Klasse:

public function rules() 
{ 

    return [ 
     'use_shipping' => 'boolean', 
     'shipping_note' => 'required_with:use_shipping', 
    ]; 
} 
+0

Welche Fehlermeldung gab es Ihnen? Hat es dir gesagt, warum es fehlgeschlagen ist? – Styphon

+0

Die Fehlermeldung Ich bekomme die 'shipping_note' wenn' use_shipping' nicht angekreuzt ist –

Antwort

4

Die required_with Validierung heißt es:

Das Feld unter Validierung vorhanden sein müssen und nicht leer nur dann, wenn Alle anderen angegebenen Felder sind Geschenk.

Aufgrund Ihrer versteckten Eingabe ist das Feld shipping_note immer vorhanden. Da das Feld auch dann vorhanden ist, wenn das Kontrollkästchen deaktiviert ist, wird immer die Validierung required_with ausgelöst.

wahrscheinlich die meisten, was Sie suchen für die Validierung required_if ist, in dem es heißt:

required_if: anotherfield, Wert, ...

Das Feld unter Validierung vorhanden sein müssen und nicht leer, wenn das Feld anotherfield gleich einem Wert ist.

public function rules() 
{ 
    return [ 
     'use_shipping' => 'boolean', 
     'shipping_note' => 'required_if:use_shipping,1', 
    ]; 
} 

Dies sollte shipping_note verursacht nur erforderlich, wenn der Wert von use_shipping1 ist, das nur dann, wenn das Kontrollkästchen aktiviert ist, geschehen soll.

+0

Vielen Dank für die Antwort. Leider funktioniert 'required_if: use_shipping, 1 ',' nicht. Immer noch dasselbe Verhalten wie zuvor. –

+1

@ Ich-Bin-Zurück Bist du sicher? Ich habe gerade 'Validator :: make (['use_shipping' => '0', 'shipping_note' => ''], ['use_shipping' => 'boolean', 'shipping_note' => 'required_if: use_shipping, 1' ]) -> passes() ', und es gibt" true "zurück (Validierung wird bestanden). – patricus

+0

Entschuldigung, ich habe auf falscher Seite getestet - es funktioniert tatsächlich, danke :) –