Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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

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
Php 如果字段为空,如何忽略验证规则?_Php_Laravel_Laravel 5_Laravel Validation - Fatal编程技术网

Php 如果字段为空,如何忽略验证规则?

Php 如果字段为空,如何忽略验证规则?,php,laravel,laravel-5,laravel-validation,Php,Laravel,Laravel 5,Laravel Validation,我有两次约会的规则。但我希望只有在输入了retired_on date时才遵循before_或_equal规则。我该怎么做?有时解决不了这个问题。如果在失效日期没有输入,则必须能够在没有任何错误的情况下输入已失效日期。有了这两条规则,一个错误就会出现在最开始的地方,因为默认情况下,retired_为空 'entered_on' => 'required|date_format:Y/m/d|before_or_equal:retired_on', 'retired_on' => 'da

我有两次约会的规则。但我希望只有在输入了retired_on date时才遵循before_或_equal规则。我该怎么做?有时解决不了这个问题。如果在失效日期没有输入,则必须能够在没有任何错误的情况下输入已失效日期。有了这两条规则,一个错误就会出现在最开始的地方,因为默认情况下,retired_为空

'entered_on' => 'required|date_format:Y/m/d|before_or_equal:retired_on',
'retired_on' => 'date_format:Y/m/d|after_or_equal:entered_on',
使用规则:

使用规则:


既然您说您不能使用
nullable
或升级Laravel版本,那么您可以将其分离出来,并有条件地验证该字段

//您的其他输入验证
$this->validate$请求[
'输入日期'=>'必填|日期格式:Y/m/d |之前或之前等于:退休日期',
]);
//仅验证“retired_on”是否存在且不为空
如果($request->has('retired\u on')&&!为空($request->input('retired\u on')){
//预检查通过,进行验证
$this->validate$请求[
“退休日期”=>“日期”格式:Y/m/d |之后或等于:输入日期”,
]);
}

既然您说您不能使用
nullable
或升级Laravel版本,您可以随时将其分离出来并有条件地验证该字段

//您的其他输入验证
$this->validate$请求[
'输入日期'=>'必填|日期格式:Y/m/d |之前或之前等于:退休日期',
]);
//仅验证“retired_on”是否存在且不为空
如果($request->has('retired\u on')&&!为空($request->input('retired\u on')){
//预检查通过,进行验证
$this->validate$请求[
“退休日期”=>“日期”格式:Y/m/d |之后或等于:输入日期”,
]);
}

我添加了可为空的规则,结果是“哎呀,好像出了什么问题。”现在总是显示出来。@Lorenz您确定数据库中的“已退休”已为空吗?:)我看了一下迁移,yes retired_on和entered_on是可以为空的。顺便说一句,我使用的是Laravel 5.1,after_or_equal和before_or_equal来自一个定制的验证器。我看的是Laravel 5.1教程,确实没有可以为空的规则。看来我不能使用可为空的规则。有什么方法可以做到这一点吗?我添加了可为空的规则,结果是“哎呀,好像出了什么问题。”现在总是显示出来。@Lorenz您确定数据库中已失效的已为空吗?:)我看了一下迁移,yes retired_on和entered_on是可以为空的。顺便说一句,我使用的是Laravel 5.1,after_or_equal和before_or_equal来自一个定制的验证器。我看的是Laravel 5.1教程,确实没有可以为空的规则。看来我不能使用可为空的规则。有没有办法做到这一点?我使用的是Laravel5.1。此版本中不存在可为空的规则。我该怎么办?我无法升级,因为这是一份工作,不是个人项目。我正在使用Laravel 5.1。此版本中不存在可为空的规则。我该怎么办?我无法升级,因为这是一份工作,不是个人项目。感谢您花时间编写代码!非常感谢。感谢您花时间编写代码!非常感谢。
'retired_on' => 'nullable|date_format:Y/m/d|after_or_equal:entered_on',