РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
624 of 1392 menu

Правило date_format

Правило date_format используется в валидации Laravel для проверки того, что переданное значение соответствует заданному формату даты и времени. Это правило особенно полезно, когда требуется принимать дату в определенном формате от клиентской части приложения. Первым и единственным параметром передается строка формата, совместимая с функцией PHP date_parse_from_format.

Синтаксис

<?php 'field_name' => 'date_format:format' ?>

Где format - строка формата, например, 'Y-m-d' для даты в формате '2024-12-25', или 'd.m.Y' для формата '25.12.2024'.

Пример с использованием правила в контроллере

Давайте проверим, что поле 'date_from' имеет формат 'Y-m-d', а поле 'date_to' - формат 'd.m.Y':

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class EventController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'date_from' => 'date_format:Y-m-d', 'date_to' => 'date_format:d.m.Y', ]); // $validated contains validated data return $validated; } } ?>

Пример с передачей корректных данных

Отправим запрос с корректными значениями полей:

<?php // Request data: // date_from = '2024-12-25' // date_to = '25.12.2024' $res = $request->validate([ 'date_from' => 'date_format:Y-m-d', 'date_to' => 'date_format:d.m.Y', ]); print_r($res); ?>

Результат выполнения кода:

[ "date_from" => "2024-12-25", "date_to" => "25.12.2024" ]

Пример с передачей некорректных данных

Отправим запрос с датой в неверном формате:

<?php // Request data: // date_from = '25.12.2024' // date_to = '2024-12-25' try { $res = $request->validate([ 'date_from' => 'date_format:Y-m-d', 'date_to' => 'date_format:d.m.Y', ]); print_r($res); } catch (IlluminateValidationValidationException $e) { echo $e->getMessage(); } ?>

Результат выполнения кода:

"The date from does not match the format Y-m-d. (and 1 more error)"

Пример с несколькими допустимыми форматами

Иногда требуется принять дату в одном из нескольких возможных форматов. Это можно сделать, передав правило date_format с каждым форматом:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class EventController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'event_date' => 'date_format:Y-m-d|date_format:d.m.Y|date_format:m/d/Y', ]); // $validated contains validated data return $validated; } } ?>

Пример с использованием после валидации

Правило date_format часто используется вместе с правилом after для проверки, что одна дата следует за другой:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class PeriodController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'start_date' => 'date_format:Y-m-d|after:2024-01-01', 'end_date' => 'date_format:Y-m-d|after:start_date', ]); // $validated contains validated data return $validated; } } ?>

Пример с использованием правила в FormRequest

Для лучшей организации кода правило date_format может быть вынесено в отдельный класс запроса:

<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; class EventRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'event_date' => 'date_format:Y-m-d H:i:s', 'event_end_date' => 'date_format:d.m.Y', ]; } public function messages() { return [ 'event_date.date_format' => 'Дата события должна быть в формате Y-m-d H:i:s', 'event_end_date.date_format' => 'Дата окончания должна быть в формате d.m.Y', ]; } } ?>

Смотрите также

  • правило date,
    которое проверяет, является ли значение корректной датой
  • правило after,
    которое проверяет, что дата идет после указанной даты
  • правило before,
    которое проверяет, что дата идет до указанной даты
  • класс FormRequest,
    который используется для создания классов запросов с валидацией
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить