Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.4验证规则-可选,但如果存在,则进行验证;_Laravel_Laravel 5 - Fatal编程技术网

Laravel 5.4验证规则-可选,但如果存在,则进行验证;

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(); 但它无法验证…:/任何帮助都将不胜感激 不要在验证器上

我试图通过表单创建一个用户更新验证,我在表单中传递,例如'password'=>NULL,或者'password'=>newone'

我试图使其仅在作为非null传递时进行验证,并且什么都没有,甚至“有时”也不起作用:/

我试图验证为:

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'
]);