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

Kar*_*arl 3 php validation laravel

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

我查看了验证的文档,但除了"max"规则之外没有其他任何操作,但这不起作用.

还有其他选择吗?

hkt*_*ang 7

更新

我找到了一个更清洁和防弹的解决方案:

    'mustBeEmpty'  => 'present|max:0',
Run Code Online (Sandbox Code Playgroud)

原始答案

我使用以下规则来实现可以(安全地)验证空虚的可行规则:

    'mustBeEmpty'  => 'present|max:0',
Run Code Online (Sandbox Code Playgroud)

因此,__CODE__表示验证字段必须存在于输入数据中,但可以为空.

然后__CODE__检查验证字段是否必须包含在给定的值列表中.就我而言,我只给出一个值,一个随机值.通过这种方式,价值几乎没有机会匹配.如果你愿意,你可以使用随机哈希,虽然概率仍然存在"碰撞".


The*_*pha 3

在验证的方法中,扩展/添加自定义规则:

Validator::extend('mustBeEmpty', function($attr, $value, $params){
    if(!empty($attr)) return false;
    return true;
});
Run Code Online (Sandbox Code Playgroud)

然后你可以这样使用rule

protected $rules = array(
    'emptyInputField' => 'mustBeEmpty'
);
Run Code Online (Sandbox Code Playgroud)

然后一切如常,只需使用:

$v = Validator::make(Input::except('_token'), $rules);
if($v->passes()) {
    // Passed, means that the emptyInputField is empty
}
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以做到这一点,而无需像这样扩展它或扩展类,Validator但这是一种简单的Laravelish方法。顺便说一句,有一个可用的软件包Github作为Laravel 应用程序的蜜罐垃圾邮件预防,您可以检查一下。