我有一个需要为空的输入字段,否则我希望验证失败。 这是通过联系表单阻止垃圾邮件的尝试。
我已查看验证的文档,但除了“max”规则外,没有其他方法可以实现此目的,但这并不起作用。
还有其他选项吗?
我有一个需要为空的输入字段,否则我希望验证失败。 这是通过联系表单阻止垃圾邮件的尝试。
我已查看验证的文档,但除了“max”规则外,没有其他方法可以实现此目的,但这并不起作用。
还有其他选项吗?
'mustBeEmpty' => 'present|max:0',
Validator::extend('mustBeEmpty', function($attr, $value, $params){
if(!empty($attr)) return false;
return true;
});
然后您可以像这样使用此规则
:
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
上有一个可用的软件包作为Laravel应用程序的蜜罐垃圾邮件预防,您可以检查一下。
对于 Laravel 8.x 及以上版本,您可以使用 prohibited
验证规则:
return [
'emptyInputField' => 'prohibited',
];
'emptyInputField' => 'nullable|prohibited'
,否则规则总是会触发,即使发送了一个空字符串。 - Alexander Taubenkorbsometimes
条件规则添加。例如:'email' => 'sometimes|email'
。只有当输入字段中存在内容时,这些规则才会被应用。您可以使用empty规则。详情请参见此处:https://laravel.com/docs/5.2/validation#conditionally-adding-rules