web-dev-qa-db-fra.com

Laravel IN Validation ou Validation by ENUM Values

J'initie à Laravel. J'ai cherché et je n'ai pas trouvé comment valider les données avec certaines valeurs ENUM. Sur le code ci-dessous, j'ai besoin que type soit juste DEFAULT ou SOCIAL. L'un ou l'autre:

$validator = Validator::make(Input::only(['username', 'password', 'type']), [
    'type' => '', // DEFAULT or SOCIAL values
    'username' => 'required|min:6|max:255',
    'password' => 'required|min:6|max:255'
]);

Est possible?

27
Maykonn

dans: PAR DÉFAUT, SOCIAL
Le champ en cours de validation doit être inclus dans la liste de valeurs donnée.

not_in: PAR DÉFAUT, SOCIAL
Le champ en cours de validation ne doit pas être inclus dans la liste de valeurs donnée.

$validator = Validator::make(Input::only(['username', 'password', 'type']), [
    'type' => 'in:DEFAULT,SOCIAL', // DEFAULT or SOCIAL values
    'username' => 'required|min:6|max:255',
    'password' => 'required|min:6|max:255'
]);

:)

68
Alupotha

La réponse acceptée est correcte, mais je veux ajouter comment définir la règle in pour utiliser les constantes existantes ou un tableau de valeurs.

Donc, si vous avez:

class MyClass {
  const DEFAULT = 'default';
  const SOCIAL = 'social';
  const WHATEVER = 'whatever';
  ...

Vous pouvez créer une règle de validation en utilisant la méthode Illuminate\Validation\Rule De in:

'type' => Rule::in([MyClass::DEFAULT, MyClass::SOCIAL, MyClass::WHATEVER])

Ou, si vous avez déjà regroupé ces valeurs dans un tableau, vous pouvez:

class MyClass {
  const DEFAULT = 'default';
  const SOCIAL = 'social';
  const WHATEVER = 'whatever';
  public static $types = [self::DEFAULT, self::SOCIAL, self::WHATEVER];

puis écrivez la règle comme suit:

'type' => Rule::in(MyClass::$types)
5
Casper