【发布时间】:2014-08-17 21:21:08
【问题描述】:
我有一个需要为空的输入字段,否则我希望验证失败。这是通过联系表单阻止垃圾邮件的尝试。
我查看了验证文档,但除了“max”规则外,没有什么可以做的,但这不起作用。
还有其他选择吗?
【问题讨论】:
标签: php validation laravel
我有一个需要为空的输入字段,否则我希望验证失败。这是通过联系表单阻止垃圾邮件的尝试。
我查看了验证文档,但除了“max”规则外,没有什么可以做的,但这不起作用。
还有其他选择吗?
【问题讨论】:
标签: php validation laravel
在您进行验证的方法中,扩展/添加自定义规则:
Validator::extend('mustBeEmpty', function($attr, $value, $params){
if(!empty($attr)) return false;
return true;
});
那么你可以使用这个rule like:
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,你可以检查一下。
【讨论】:
您可以使用 empty 规则。详情可以看这里:https://laravel.com/docs/5.2/validation#conditionally-adding-rules
【讨论】:
这是一个干净且(可能)防弹的解决方案:
'mustBeEmpty' => 'present|max:0',
【讨论】:
在 laravel 5.8 中,您可以使用 sometimes 来添加条件规则。 'email' => 'sometimes|email' 。如果输入字段中存在某些内容,则将应用此规则。
【讨论】:
对于 Laravel 8.x 及更高版本,您可以使用prohibited 验证规则:
return [
'emptyInputField' => 'prohibited',
];
【讨论】: