Правило after
Правило after используется для проверки того, что значение поля является датой, которая следует после заданной даты. Это правило полезно при валидации дат событий, сроков выполнения задач, дат рождения и других временных промежутков. В качестве аргумента правило принимает строку с датой в формате, который понимает функция strtotime PHP, либо другую дату, переданную через after:another_field.
Правило можно использовать как с конкретной датой (например, after:2025-01-01), так и с именем другого поля (например, after:start_date) для сравнения двух дат между собой. Также поддерживается использование ключевого слова today, которое означает текущую дату.
Синтаксис
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
Validator::make($request->all(), [
'field_name' => 'after:date'
]);
?>
Пример
Давайте проверим, что дата события позже первого января 2025 года:
<?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(), [
'event_date' => 'required|date|after:2025-01-01'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Event date is valid']);
}
}
?>
Результат выполнения кода при передаче даты '2025-06-15':
{
"message": "Event date is valid"
}
Результат выполнения кода при передаче даты '2024-12-31':
{
"errors": {
"event_date": [
"The event date must be a date after 2025-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(), [
'start_date' => 'required|date',
'end_date' => 'required|date|after:start_date'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Dates are valid']);
}
}
?>
Результат выполнения кода при передаче дат '2025-01-01' и '2025-02-01':
{
"message": "Dates are valid"
}
Результат выполнения кода при передаче дат '2025-02-01' и '2025-01-01':
{
"errors": {
"end_date": [
"The end date must be a date after start date."
]
}
}
Пример
Давайте проверим, что дата события позже текущей даты:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class TaskController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'deadline' => 'required|date|after:today'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Deadline is valid']);
}
}
?>
Результат выполнения кода при передаче даты '2026-12-31' (если сегодня '2026-01-15'):
{
"message": "Deadline is valid"
}
Смотрите также
-
правило
before,
которое проверяет, что дата предшествует указанной дате -
правило
after_or_equal,
которое проверяет, что дата следует за указанной или равна ей -
правило
date,
которое проверяет, что значение является корректной датой -
правило
before_or_equal,
которое проверяет, что дата предшествует указанной или равна ей