当字符串或数组都有效时,如何验证请求值?
'val' => 'bail|required|string'
'val' => 'bail|required|array'
验证表达是什么?
答案 0 :(得分:2)
我认为有一种方法可以使用开箱即用的验证规则来实现它。您需要使用Custom Validation Rules来实现此目的:
在AppServiceProvider
' boot
方法中,添加
public function boot()
{
Validator::extend('string_or_array', function ($attribute, $value, $parameters, $validator) {
return is_string($value) || is_array($value);
});
}
然后你可以开始使用它了:
'val' => 'bail|required|string_or_array'
您可以选择设置自定义验证错误消息,或使用自定义验证类来实现它。查看上面的doc链接以获取更多信息。
答案 1 :(得分:1)
@ lionel-chan提供的解决方案是最优雅的方式,但您也可以通过检查变量的类型来实现,以便将相应的规则添加为:
$string_or_array_rule = is_array($inputs['val']) ? 'array' : 'string'
"val" => "bail|required|{$string_or_array_rule}"