web-dev-qa-db-de.com

Required_if Laravel mit mehreren Werten

ich habe ein Dropdown-Menü wie dieses

<select name="selection">
   <option value="1">Option 1</option>
   <option value="2">Option 2</option>
   <option value="3">Option 3</option>
</select>
<input type="text" name="stext">

ich will in Laravel

public static myfunction(){
   $input = \Input::only('selection','stext');
   $rule = array(
      'selection' => 'required',
      'stext' => 'required_if:selection,2,3',
   );
   $validate = \Validator::make($input,$rule);
}

wenn ich jedoch Option 1 wähle, ist noch Stext erforderlich. warum? wie kann ich das beheben?

danke schon mal.

Ich denke, dass die Validierung von required_if nur einen Wert pro Zeit akzeptiert. Versuchen Sie, Ihren Validierungscode wie folgt zu ändern:

$rule = array(
  'selection' => 'required',
  'stext' => 'required_if:selection,2|required_if:selection,3',
);

BEARBEITEN: LePhleg-Antwort prüfen, ist sauberer . Zum Zeitpunkt der Antwort, die nicht möglich war, überprüfen Sie einfach die Frage, er hat dieselbe Methode verwendet, aber nicht funktioniert.

25
RDev

Sie müssen nur alle Werte als durch Komma getrennte Parameter übergeben:

$rules = array(
      'selection' => 'required',
      'stext'     => 'required_if:selection,2,3'
);
23
lephleg

probier diese

wenn dann ein einzelner Übereinstimmungswert so verwendet wird

'stext'     => 'required_if:selection,2'

wenn Sie mehrere Werte haben, verwenden Sie diese Option (durch Komma getrennt).

'stext'     => 'required_if:selection,2,3'

weitere Informationen finden Sie in der Dokumentation required_if

1
Jignesh Joisar

Sie können manchmal mit der Validierung von Laravel fortfahren. Sie können einen benutzerdefinierten Abschluss wie im folgenden Beispiel definieren 

public static myfunction(){
   $input = \Input::only('selection','stext');
   $rule = array(
      'selection' => 'required'
   );
$validator->sometimes('stext', 'required', function($input){
    return (($input->selection == 1) || ($input->selection == 2));
});
   $validate = \Validator::make($input,$rule);
}
0
Shyam Achuthan