Laravel验证有时会规定日期验证

时间:2017-04-15 16:57:14

标签: laravel validation laravel-5

我目前有一个验证规则,如下所示:

  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

1 个答案:

答案 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;
}

这只是一个模型,只是为了让您知道您可以操作并访问传递的字段。