Laravel通过ENUM值验证或验证

时间:2015-03-11 00:44:06

标签: php validation laravel enums

我在Laravel开始。 我搜索并没有找到如何使用一些ENUM值验证数据。在下面的代码中,我需要type必须只是DEFAULTSOCIAL。一个或其他:

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

有可能吗?

4 个答案:

答案 0 :(得分:58)

<强> 在:DEFAULT,社会
验证字段必须包含在给定的值列表中。

<强> NOT_IN:DEFAULT,社会
验证字段不得包含在给定的值列表中。

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

:)

答案 1 :(得分:1)

可接受的答案是可以的,但是我想添加如何设置in规则以使用现有的常量或值数组

所以,如果您有:

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

您可以使用Illuminate\Validation\Rule的{​​{1}}方法来制定验证规则:

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

答案 2 :(得分:1)

您可以使用 Rule 类,如 te documentation 所示。 例如,在迁移中具有以下定义:

$table->enum('letter',['a','b','c']);

现在您的 FormRequest 规则应该:

class CheckInRequest extends FormRequest
{ 
    public function authorize()
    {
        return true;
    }


    public function rules()
    {
        return [
            'letter'=>[
                'required',
                 Rule::in(['a', 'b','c']),
             ],
        ];
    }
}

其中 Rule::in (['a', 'b', 'c']),必须包含您的“enun”类型字段的值

这对我来说很好。

答案 3 :(得分:1)

我认为使用枚举

规则::in (['a', 'b', 'c']),