我有一个输入字段需要为空,否则我希望验证失败。这是通过联系表单阻止垃圾邮件的尝试。
我已经查看了验证文档但除了" max"之外没有其他任何事情要做。规则,但这不起作用。
还有其他选择吗?
答案 0 :(得分:6)
这是一个干净的(可能)防弹解决方案:
'mustBeEmpty' => 'present|max:0',
答案 1 :(得分:3)
在验证的方法中,扩展/添加自定义规则:
Validator::extend('mustBeEmpty', function($attr, $value, $params){
if(!empty($attr)) return false;
return true;
});
然后你可以使用这个rule
:
protected $rules = array(
'emptyInputField' => 'mustBeEmpty'
);
然后一切都像往常一样,只需使用:
$v = Validator::make(Input::except('_token'), $rules);
if($v->passes()) {
// Passed, means that the emptyInputField is empty
}
还有其他方法可以做到这一点,而不是像这样扩展它或扩展Validator
类,但这是一种简单的Laravelish
方法。顺便说一句,Github
上有Honeypot spam prevention for Laravel applications个可用的套餐,您可以查看。
答案 2 :(得分:0)
答案 3 :(得分:0)
在laravel 5.8中,您可以使用sometimes
添加条件规则。 'email' => 'sometimes|email'
。如果输入字段中存在某些内容,则将应用此规则。
答案 4 :(得分:0)
对于 Laravel 8.x 及更高版本,您可以使用 prohibited
验证规则:
return [
'emptyInputField' => 'prohibited',
];