Проверка Laravel IN или проверка по значениям ENUM

Я начинаю в Laravel. Я искал и не нашел, как проверить данные с некоторыми значениями ENUM. В приведенном ниже коде мне нужно, чтобы type было просто DEFAULT или 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'
]);

Возможно?


person Maykonn    schedule 11.03.2015    source источник


Ответы (4)


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

:)

person Alupotha    schedule 11.03.2015
comment
как насчет использования значений с символами utf-8? - person mirza; 06.08.2015
comment
как насчет Default, Social, DeFauLt, social? - person Justin Moh; 14.08.2015
comment
@JustinMoh Я считаю, что проверки in и not_in должны быть точными значениями, в вашем случае проверка регулярных выражений работает нормально. - person Maykonn; 15.03.2016
comment
@JustinMoh, вы можете преобразовать ввод запроса в верхний регистр и подтвердить. - person Alupotha; 01.11.2017

Принятый ответ в порядке, но я хочу добавить как установить правило in для использования существующих констант или массива значений.

Итак, если у Вас есть:

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

Вы можете создать правило проверки, используя метод Illuminate\Validation\Rule in:

'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)
person Aleksandar    schedule 22.03.2019
comment
где бы вы создали и как бы вы назвали пример MyClass в проекте Laravel? - person Marcelo Fonseca; 18.03.2020
comment
@MarceloFonseca, вы можете поместить эти поля в класс модели или разделить их на отдельный класс. В примере OP я думаю, что отдельный класс можно было бы назвать Login или LoginType. Здесь (ссылка) приведен пример того, где и как можно создавать перечисления. Это тоже может помочь :) - person Aleksandar; 19.03.2020


я думаю использовать перечисление

Правило::in (['a', 'b', 'c']),

person Abderhman daya    schedule 29.07.2021