Max*_*eat 3 php validation laravel
我想验证一个变量是数组还是匹配正则表达式的字符串。这可以使用 Laravel 验证通过单个规则来完成吗?
这是我想要的一个例子:
// Does not work because the validation tries to match ALL conditions
$rules = [
'keys' => 'array|regex:\d+'
];
$validation = Validator::make(['keys' => '12345'], $rules);
if ($validation->fails()) {
// This is getting executed because it is not an array
} else {
// Do something else
}
Run Code Online (Sandbox Code Playgroud)
我已经通过使用 2 个不同的验证器对象(每个对象具有一个条件)并检查其中一个是否通过来解决方法,但我想知道 Laravel 中是否有更“优雅”的解决方案。
我能想到的最“优雅”的解决方法是创建自定义验证规则,但您也可以尝试有条件地添加数组和正则表达式规则。
但是显而易见的,检查变量的类型以添加适当的规则如何?
//dummy data, could be from $request->all()
$data = ['keys' => '12345'];
$rules = [
'keys' => is_array($data['keys']) ? 'array' : 'regex:\d+'
];
$validation = Validator::make($data, $rules);
Run Code Online (Sandbox Code Playgroud)
快速而简单,但它浪费了数组检查,并且总是会给出正则表达式错误消息。
归档时间: |
|
查看次数: |
3582 次 |
最近记录: |