Правило date
Правило date проверяет, что переданное значение является допустимой датой.
Оно может использоваться как самостоятельно, так и в сочетании с другими правилами,
например, after или before, для проверки временных диапазонов.
По умолчанию правило принимает строки, которые могут быть преобразованы в дату
через функцию PHP strtotime. Это означает, что поддерживаются многие
распространённые форматы, такие как '2025-12-31', '31/12/2025',
'31 December 2025' и другие.
Синтаксис
<?php
// В массиве правил
'field' => 'date'
?>
Пример
Давайте создадим запрос валидации для поля 'birthday',
которое должно содержать корректную дату:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'birthday' => 'date'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
// Сохранение данных...
return response()->json(['message' => 'Success']);
}
}
?>
Результат выполнения кода при передаче некорректной даты:
[
"birthday" => ["The birthday field must be a valid date."]
]
Результат при передаче корректной даты (например, '1990-05-15'):
[
"message" => "Success"
]
Пример
Правило date часто используется вместе с правилом after
для проверки, что одна дата идёт после другой.
Проверим, что поле 'start_date' является датой,
и что оно идёт после сегодняшнего дня:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class EventController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'start_date' => 'date|after:today'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Event created']);
}
}
?>
Результат выполнения кода при передаче даты в прошлом:
[
"start_date" => ["The start date field must be a date after today."]
]
Пример
Можно использовать правило date в сочетании с before
для проверки, что дата события наступает раньше указанной даты.
Проверим, что поле 'end_date' является датой,
и что оно идёт до '2026-01-01':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ProjectController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'end_date' => 'date|before:2026-01-01'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Project created']);
}
}
?>
Результат выполнения кода при передаче даты после указанной:
[
"end_date" => ["The end date field must be a date before 2026-01-01."]
]
Смотрите также
-
правило
after,
которое проверяет, что дата идёт после указанного значения -
правило
before,
которое проверяет, что дата идёт до указанного значения -
правило
date_format,
которое проверяет соответствие даты конкретному формату -
правило
after_or_equal,
которое проверяет, что дата идёт после или равна указанной