Karl Karl - 1 year ago 143
PHP Question

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?

Answer Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download