我在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'
]);
有可能吗?
答案 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']),