web-dev-qa-db-ja.com

Laravel IN検証またはENUM値による検証

私はLaravelで始めています。検索したが、いくつかのENUM値でデータを検証する方法が見つかりませんでした。以下のコードでは、typeDEFAULTまたはSOCIALである必要があります。いずれか:

$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'
]);

可能だ?

27
Maykonn

in:DEFAULT、SOCIAL
検証中のフィールドは、指定された値のリストに含まれている必要があります。

not_in:DEFAULT、SOCIAL
検証中のフィールドは、指定された値のリストに含めることはできません。

$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

受け入れられた答えは大丈夫ですが、既存の定数または値の配列を使用するようにinルールを設定する方法を追加します。

だから、あなたが持っている場合:

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

Illuminate\Validation\Ruleinメソッドを使用して、検証ルールを作成できます。

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

または、それらの値が既に配列にグループ化されている場合、次のことができます。

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

次に、ルールを次のように記述します。

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