我正在尝试通过表单创建用户更新验证,我在其中传递,例如'password'=> NULL,或'password'=>'newone';
我试图让它只是验证它是否作为非null传递,什么也没有,甚至'有时'不起作用:/
我正在尝试验证为:
Validator::make(array('test'=>NULL), array('test'=> 'sometimes|required|min:6'))->validate();
但它未能验证......:/我们将不胜感激。
答案 0 :(得分:16)
也许您在寻找'nullable'?
'test'=> 'nullable|min:6'
答案 1 :(得分:2)
我认为您正在寻找filled
。
https://laravel.com/docs/5.4/validation#rule-filled
答案 2 :(得分:1)
不要通过' required'在验证器上
验证如下
$this->validate($request, [
'username' => 'required|unique:login',
'password' => 'between:8,20'
]);
以上验证器只有在存在时才接受密码但应在8到20之间
这就是我在用例中所做的
case 'update':
$rules = [
'protocol_id' => 'required',
'name' => 'required|max:30|unique:tenant.trackers'.',name,' . $id,
'ip'=>'required',
'imei' => 'max:30|unique:tenant.trackers'.',imei,' . $id,
'simcard_no' => 'between:8,15|unique:tenant.trackers'.',simcard_no,' . $id,
'data_retention_period'=>'required|integer'
];
break;
此处跟踪器可能有也可能没有SIM卡号,如果有,则会出现8到15个字符错误
更新
如果您仍想传递硬编码的“空”'然后添加值 在验证器中跟随
$str='NULL';
$rules = [
password => 'required|not_in:'.$str,
];
答案 3 :(得分:1)
虽然问题有点陈旧,但这就是你应该怎么做的。对于这么简单的事情,你不需要用如此多的代码来努力奋斗。
您需要同时使用nullable和验证规则,例如:
$this->validate($request, [
'username' => 'required|unique:login',
'password' => 'sometimes|nullable|between:8,20'
]);
上述内容仅在字段具有某个值时才会验证,如果没有,则忽略,或者如果它传递null。这很有效。
答案 4 :(得分:0)
相关的验证规则是:
所有都有其用途,可以在此处进行检查:
https://laravel.com/docs/5.8/validation#rule-required
如果您希望验证始终应用
https://laravel.com/docs/5.8/validation#conditionally-adding-rules
如果您想有时
应用验证规则https://laravel.com/docs/5.8/validation#a-note-on-optional-fields
如果您希望属性也允许为空作为值
答案 5 :(得分:-1)
如果您故意发送null,请为验证创建if条件:
if ($request->test != null)
Validator::make(array('test' => 'min:6'))->validate();
}