web-dev-qa-db-fra.com

Required_if laravel avec plusieurs valeurs

j'ai un menu déroulant comme celui-ci

<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">

je veux en laravel

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

mais si je sélectionne l'option 1, le texte est toujours requis. pourquoi? comment je peux le réparer?

merci avant.

14

Je pense que la validation require_if n'accepte qu'une valeur par fois ... Essayez de changer votre code de validation comme ci-dessous:

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

EDIT: Vérifiez la réponse de LePhleg, est plus propre . Au moment de la réponse qui n’était pas possible, vérifiez simplement la question, il utilisait la même méthode mais n’a pas fonctionné.

25
RDev

Il vous suffit de transmettre toutes les valeurs en tant que paramètres, séparés par une virgule:

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

essaye celui-là

si une seule correspondance valeur alors utilisé comme ça

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

si vous avez plusieurs valeurs puis utilisées comme ça (séparées par une virgule)

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

pour plus d'informations, voir documentation required_if

1
Jignesh Joisar

Vous pouvez aller de l'avant avec parfois validation pour laravel. vous pouvez définir une fermeture personnalisée comme dans l'exemple ci-dessous 

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