Laravel验证:一个输入框,数字或电子邮件;OR逻辑



我知道,对于复杂的验证,我可以制作一个验证函数,但如果存在,我正在寻找一个更短的路径。这是一个场景:

<input type="text" name="query" placeholder="Enter Email or Mobile number">

然而,为了验证,我可以检查它是电子邮件还是数字。没有OR逻辑,或者我找不到。

$request->validate([
'query' => 'email' //cannot have 'email OR digit:8,13'
]);

@Aaron您可以使用sometimes闭包:

$input = $this->query;
$validator = Validator::make($input, [
'query' => ['required'],
]);
// Apply the email rule when 'query' is not numeric
$validator->sometimes('query', 'email', function($input, $item) {
return ! is_numeric($item);
});
// Apply the digits_between rule when 'query' is numeric
$validator->sometimes('query', 'digits_between:8,13', function($input, $item) {
return is_numeric($item);
});

相关内容

  • 没有找到相关文章

最新更新