Skip to content
Advertisement

Laravel Form Validation, fail if not empty

I have an input field which needs to be empty, otherwise I want the validation to fail. This is an attempt at stopping spam through a contact form.

I’ve looked at the documentation for the validation but there’s nothing to do this, other than the “max” rule, but this doesn’t work.

Any other options?

Advertisement

Answer

In the method where you are validation, extend/add custom rule:

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

Then you may use this rule like:

protected $rules = array(
    'emptyInputField' => 'mustBeEmpty'
);

Then everything is as usual, just use:

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

There are other ways to do it without extending it like this or extending the Validator class but it’s an easy Laravelish way to do it. Btw, there is a package available on Github as Honeypot spam prevention for Laravel applications, you may check that.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement