我想验证一个变量是一个数组还是一个匹配正则表达式的字符串。这可以用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
}
我已经有了一个变通方案,即使用2个不同的验证器对象(每个对象都有一个条件)并检查其中一个是否通过,但我想知道是否有一个更“优雅”的解决方案内置在Laravel中。
2条答案
按热度按时间wf82jlnq1#
我能想到的最“优雅”的解决方法是创建一个自定义验证规则,但是您也可以尝试有条件地添加数组和正则表达式规则。
但是,检查变量的类型以添加适当的规则这一显而易见的操作又如何呢?
快速而简单,但这是对数组检查的浪费,而且总是会给予正则表达式错误消息。
yxyvkwin2#
如果有些人仍然需要:我的解决方案(在Laravel9中)是使用prepareForValidation函数在验证发生之前将偶尔出现的字符串转换为数组。