Как проверить год в правиле проверки даты в Laravel - PullRequest
0 голосов
/ 24 мая 2019

В Laravel у меня есть объект Convention с year, start_date и end_date. Ограничение состоит в том, что поля start_date и end_date принадлежат полю года.

Я хочу использовать проверку запроса, но ни одно из доступных правил не соответствует моим потребностям.

Я бы хотел что-то вроде этого (но это не работает):

    class ConventionRequest extends FormRequest
    {
      public function rules() {
       return [
         'year' => 'required',
         'start_date' => 'required|date|after_or_equal:year-01-01',
         'end_date' => 'required|date|before_or_equal:year-12-31']
      }
    }

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Спасибо за ваши ответы. На самом деле, я преуспел в своем начальном направлении исследований:

$SameYear = "|after_or_equal:" . $this->year . "-01-01|before_or_equal:" . $this->year . '-12-31'  ;
return [
  'year' => 'required',
  'start_date' => 'required|date' . $SameYear,
0 голосов
/ 24 мая 2019

Создайте пользовательское правило:

//YearIsGreater Rule class

public function passes($attribute, $value)
{
    $date = DateTime::createFromFormat("Y-m-d", $value);
    $year = $date->format("Y");

    return $year > request('year');
}

и используйте его вот так

return [
    'year' => 'required',
    'start_date' => [
        'required',
        'date',
        new YearIsGreater,
    ],
    //
],
...