使用Laravel检查验证期间输入中是否存在字段

esk*_*009 3 validation isset laravel laravel-4

我想确保某些字段作为表单的一部分发布但我不知道是否有些是空值.

"必需"验证规则不起作用,因为我很乐意接受空字符串.我已尝试过以下内容,但由于"address2"字段从未发送过,验证器不会处理它.

有任何想法吗?

$rules = array(
     'address2' => 'attribute_exists'
);



class CustomValidator extends Illuminate\Validation\Validator {

    public function validateAttributeExists($attribute, $value, $parameters)
    {
        return isset($this->data[$attribute]);
    }
}
Run Code Online (Sandbox Code Playgroud)

Cod*_*ull 15

您可以使用Input::has('address2')以检查address2输入名称是否发布了某些内容.看例子:

if(Input::has('address2')) {
    // Do something!
}
Run Code Online (Sandbox Code Playgroud)


DJ *_*Far 8

在 Laravel 5 中,

if($request->has('address2')){
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)


ETh*_* Jo 4

您应该像这样制作自定义验证器。

use Symfony\Component\Translation\TranslatorInterface;

class CustomValidator extends Illuminate\Validation\Validator {

    public function __construct(TranslatorInterface $translator, $data, $rules, $messages = array())
    {
        parent::__construct($translator, $data, $rules, $messages);

        $this->implicitRules[] = 'AttributeExists';
    }

    public function validateAttributeExists($attribute, $value, $parameters)
    {
        return isset($this->data[$attribute]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将使 AttributeExists 无需使用 require 即可工作。有关于此的更多解释。当您想要创建新的验证器规则时。如果您没有在 $implicitRules 中设置它,那么如果您在该方法之前不使用 require 规则,该方法将无法正常工作。您可以在 laravel 源代码中找到更多信息。