我目前有一个验证规则,如下所示:
public function rules()
{
return [
'startDate' => 'required|sometimes|before_or_equal:endDate',
'endDate' => 'sometimes|required|after_or_equal:startDate',
];
}
有时候选项的工作方式是我理解的,如果该字段存在,则运行验证规则。但是,如果结束日期未发送或为空,则我之前或相同的规则将启动并失败。在我的应用程序中的某些实例中,结束日期将为null。有没有办法取消'在这个实例中的startDate验证规则还是我需要为此目的创建一个自定义验证器?
类似于before_or_equal_when_present
?
答案 0 :(得分:0)
您可以使用IF在规则函数中添加和操作规则。您可以访问那里引用$ this作为请求本身的输入:
public function rules()
{
$rules = [
'startDate' => 'required|sometimes|before_or_equal:endDate',
'endDate' => 'sometimes|required|after_or_equal:startDate',
];
if( $this->input('endDate') > 0)
$rules['endDate'] = "rule". $rules['endDate']
return $rules;
}
这只是一个模型,只是为了让您知道您可以操作并访问传递的字段。