1

I have made custom Request called EventRequest for validating inputs I have two date attributes first one is 'start' and second one is called 'end'. 'End' must be greater or equal to start. NOTE: laravel 5.1 doesn't have after_or_equal function

Here is my code

public function rules()
{
    return [
      'name'          =>'required|min:3|max:255',
      'place'         => 'required|min:3|max:255',
      'start_date'    => 'required|date|after:yesterday',
      'end_date'      => 'required|date|after:yesterday',
      'start_time'    => 'required|date_format:H:i',
      'end_time'      => 'required|date_format:H:i'
    ];
}

I'm stuck if I set a rule for example start_date must be before:end_date but if they are at the same day it's throwing an error. Any solutions for that? Thanks in advance!

  • 1
    Possible duplicate of [Laravel 5.3 date validator: equal to or after start\_date](https://stackoverflow.com/questions/41342818/laravel-5-3-date-validator-equal-to-or-after-start-date). Short answer is `after_or_equal` is the rule you want – Ohgodwhy May 18 '18 at 23:44
  • @Ohgodwhy: is it available in 5.1 ? I think not – Niklesh Raut May 19 '18 at 05:34
  • You need to use manual `Validator` to validate like this. – Niklesh Raut May 19 '18 at 05:36
  • after_or_equal is not available in laravel5.1 – Kyle Walter May 19 '18 at 12:02
  • did you solved this ? – Niklesh Raut May 25 '18 at 08:54
  • Yes! I did but I changed the way that I used input fields I had 2 fields for date and 2 fields for time I just found a date and time picker for Bootstrap and Jquery then I had only 2 fields starting date and time and ending date and time example->(starting 29-05-2018 00:16, ending 30-05-2018 15:00) like this it is more easy to validate and compare. I hope you get the idea! :) – Kyle Walter May 28 '18 at 21:19

2 Answers2

0

Solution by using Validator manually

public function validateForm(Request $request){
    $end_date = date('Y-m-d', strtotime($request->end_date. ' -1 day' ));
    $messages = [
        "end_date.after" => "End date must be equal or greater than start date.",
    ];
    $rules = [
            'start_date'    => 'required|date|after:yesterday',
            'end_date'      => 'required|date|after:'.$end_date,
    ];
    return Validator::make($requestAll, $rules);
}
Niklesh Raut
  • 34,013
  • 16
  • 75
  • 109
-1

Start date is after:yesterday... so end_date can be after start_date ...

 public function rules()
{
    return [
      'name'          =>'required|min:3|max:255',
      'place'         => 'required|min:3|max:255',
      'start_date'    => 'required|date|after:yesterday',
      'end_date'      => 'required|date|after:start_date',
      'start_time'    => 'required|date_format:H:i',
      'end_time'      => 'required|date_format:H:i'
    ];
}
Serge
  • 2,107
  • 1
  • 18
  • 24