Laravel表单验证,如果不为空则失败

时间:2014-06-26 21:17:39

标签: php validation laravel

我有一个输入字段需要为空,否则我希望验证失败。这是通过联系表单阻止垃圾邮件的尝试。

我已经查看了验证文档但除了" max"之外没有其他任何事情要做。规则,但这不起作用。

还有其他选择吗?

5 个答案:

答案 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)

您可以使用规则。详情请见:https://laravel.com/docs/5.2/validation#conditionally-adding-rules

答案 3 :(得分:0)

在laravel 5.8中,您可以使用sometimes添加条件规则。 'email' => 'sometimes|email'。如果输入字段中存在某些内容,则将应用此规则。

答案 4 :(得分:0)

对于 Laravel 8.x 及更高版本,您可以使用 prohibited 验证规则:

return [
   'emptyInputField' => 'prohibited',
];