我正在尝试通过表单创建用户更新验证,我传递的地方,例如'password'=> NULL,或'password'=>'newone';
我只是试图让它验证,如果它被传递为非null,没有,甚至"有时"工作:/
我试图验证为:
Validator::make(array('test'=>NULL), array('test'=> 'sometimes|required|min:6'))->validate();
Run Code Online (Sandbox Code Playgroud)
但它未能验证......:/ ANy帮助将不胜感激.
虽然这个问题有点老,但这就是你应该怎么做。你不需要在这么简单的事情上用这么多代码努力奋斗。
您需要同时具有可空性,有时还需要在验证规则上,例如:
$this->validate($request, [
'username' => 'required|unique:login',
'password' => 'sometimes|nullable|between:8,20'
]);
Run Code Online (Sandbox Code Playgroud)
以上仅在该字段具有某些值时才进行验证,如果没有,或者它通过 null 则忽略。这很好用。
不要在验证器上传递“必需”
验证如下
$this->validate($request, [
'username' => 'required|unique:login',
'password' => 'between:8,20'
]);
Run Code Online (Sandbox Code Playgroud)
仅当密码存在时,上述验证器才会接受密码,但密码应在 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;
Run Code Online (Sandbox Code Playgroud)
这里的追踪器可能有也可能没有SIM卡号,如果有的话将会有8到15个字符错误
更新
如果您仍然想传递硬编码的“NULL”值,请在验证器中添加以下内容
$str='NULL';
$rules = [
password => 'required|not_in:'.$str,
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13017 次 |
| 最近记录: |