Lumen 5.6自定义验证规则问题:校验真实Null值
实现Lumen 5.6的真实Null值自定义验证规则
我帮你完善这个TrueNull验证规则,刚好能满足你要校验真实Null值的需求——也就是只有当值严格等于null时才通过验证,空字符串""、0、false这些值都会被拦截。
完整的规则代码(App\Rules\TrueNull.php)
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class TrueNull implements Rule { /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { // 严格判断值是否为null,空字符串、0等非null值都会返回false return $value === null; } /** * Get the validation error message. * * @return string */ public function message() { return 'The :attribute must be a true null value.'; } }
如何使用这个规则
在你的控制器验证逻辑里,直接实例化这个规则即可:
// 示例1:验证request中的字段可以不存在,但如果存在则必须是真实null $this->validate($request, [ 'your_field' => [new \App\Rules\TrueNull], ]); // 示例2:字段必须存在且为真实null,加上required规则 $this->validate($request, [ 'your_field' => ['required', new \App\Rules\TrueNull], ]);
逻辑说明
passes方法里用===严格比较,确保只有当值是真正的null时才返回true,完美区分了空字符串""和null的差异,完全匹配你的需求。message方法返回自定义错误提示,其中:attribute会自动替换为验证的字段名,让错误信息更直观。
内容的提问来源于stack exchange,提问作者Alexander Beyer
相关产品推荐
相关产品推荐

