Laravel 5.4验证规则-可选,但如果存在,则进行验证;
我试图通过表单创建一个用户更新验证,我在表单中传递,例如'password'=>NULL,或者'password'=>newone' 我试图使其仅在作为非null传递时进行验证,并且什么都没有,甚至“有时”也不起作用:/ 我试图验证为:Laravel 5.4验证规则-可选,但如果存在,则进行验证;,laravel,laravel-5,Laravel,Laravel 5,我试图通过表单创建一个用户更新验证,我在表单中传递,例如'password'=>NULL,或者'password'=>newone' 我试图使其仅在作为非null传递时进行验证,并且什么都没有,甚至“有时”也不起作用:/ 我试图验证为: Validator::make(array('test'=>NULL), array('test'=> 'sometimes|required|min:6'))->validate(); 但它无法验证…:/任何帮助都将不胜感激 不要在验证器上
Validator::make(array('test'=>NULL), array('test'=> 'sometimes|required|min:6'))->validate();
但它无法验证…:/任何帮助都将不胜感激
不要在验证器上传递“必需”
验证如下
$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个字符的错误
更新
如果仍要传递硬编码的“NULL”值,请添加
跟踪验证程序
也许你在找什么
虽然这个问题有点老了,但你应该这样做。在这么简单的事情上,你不需要为这么多的代码而苦苦挣扎 您需要在验证规则上同时具有nullable(可为空)和有时为nullable(可为空),例如:
$this->validate($request, [
'username' => 'required|unique:login',
'password' => 'sometimes|nullable|between:8,20'
]);
仅当该字段具有某些值时,上述内容才会验证;如果没有值,或者如果该字段传递null,则忽略上述内容。这很管用。我想你是在找
填充的。
相关的验证规则是:
- 必需的
- 有时
- 可空
它们都有各自的用途,可在此处查看:
如果希望验证始终应用
如果您希望有时应用验证规则
如果您希望属性也允许null作为值您可以使用有时
或必需
。它们是相互排斥的。如果您只是偶尔使用,如果它不是空的,它将被验证。是的,但是如果值作为NULL传递,有时也会使测试失败:/I猜想,问题在于传递NULL值……如果字段为空,他故意发送NULL。所以你的答案不起作用!这是我的第一个答案,所以我更新了它!是的,但是他没有像其他人一样使用laravel…他发送所有的值,即使它们没有填充…因此,使用您的解决方案,null将被验证,并且它不超过6个字符,并且显示验证错误!!!好吧,它的OP问题,还有你的。拉威尔的风格总是这样。。你可以投反对票:)你没有读我的话。在laravel中,如果您在文档中使用它,则空输入字段不会随请求一起发送!但是OP定制了当输入字段为空时发送null!如果您将规则设置为检查任何内容:例如min:6
,它将检查该字段上的null,并且null没有足够的字符,它将抛出验证错误!!他显然是个初学者,但我也是。。。随着时间的推移,他会明白的;)(如果他继续使用Laravel)
'test'=> 'nullable|min:6'
$this->validate($request, [
'username' => 'required|unique:login',
'password' => 'sometimes|nullable|between:8,20'
]);