laravel 5中的日期验证

Tex*_*xas 8 php laravel-5

我有一个StartDate字段和一个EndDate字段.两者都可能从今天开始或将来开始.它们可以在同一天开始,包括今天.我必须对这些进行验证.到目前为止我所做的是:

'StartDate'=>'required|date_format:Y/m/d|after:yesterday',
'EndDate'  => 'date_format:Y/m/d|after:yesterday',
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做,如果两个日期相等作为第二个条件,则验证为真.

有人可以帮帮我吗?

小智 14

这是您可以验证日期的方法:

'start_date'  =>  'required|date',
'end_date'    =>  'required|date|after_or_equal:start_date'
Run Code Online (Sandbox Code Playgroud)


arz*_*hed 10

我对我的网络应用程序有同样的需求.我通过after_or_equal使用以下Request方法创建自定义来解决它:

public function rules()
{
    $rules = [
       'start_date'  => 'date_format:Y-m-d|after:today'
    ];

    if ($this->request->has('start_date') && $this->request->get('start_date') != $this->request->get('end_date')) {
       $rules['end_date'] = 'date_format:Y-m-d|after:start_date';
   } else {
       $rules['end_date'] = 'date_format:Y-m-d|after:today';
   }

   return $rules;
}
Run Code Online (Sandbox Code Playgroud)


Saf*_*dar 4

据我了解,我尝试准备自定义验证规则,这可以帮助您满足您的要求。

当前下面提到的规则仅检查开始日期是否早于结束日期。

<?php 

    namespace App\Providers;

    use Validator;
    use Illuminate\Support\ServiceProvider;

    class AppServiceProvider extends ServiceProvider{

        public function boot(){
            Validator::extend('date_after', function($attribute, $value, $parameters) {
                return strtotime( $value ) > strtotime( $this->attributes[ $parameters[0] ] );
            });
            Validator::extend('date_equal', function($attribute, $value, $parameters) {
                return strtotime( $value ) == strtotime( $this->attributes[ $parameters[0] ] );
            });
        }
    }

?>
Run Code Online (Sandbox Code Playgroud)

用法:

<?php 


$inputs = array(
  'start_date' => '2013-01-20',
  'end_date'   => '2013-01-15'
);

$rules = array(
  'start_date' => 'required',
  'end_date'   => 'required|date_after:start_date'
);

$messages = array(
  'date_after' => ":attribute must be date after Start Date."
);

$validation = Validator::make($inputs, $rules, $messages);

if( $validation->fails() )
{

  echo '<pre>';
  print_r($validation->errors);
  echo '</pre>';

}

?>
Run Code Online (Sandbox Code Playgroud)

然而,我没有用我的环境测试该代码...但我相信它可以帮助您满足要求。

请让我知道您的进一步要求,以便我可以根据您的要求提供具体的解决方案。