Правило before
Правило before применяется к полям формы, содержащим дату,
и проверяет, что указанное значение предшествует заданной дате
или времени. Первым параметром передаётся строка с датой,
которая может быть как конкретной датой, так и относительным
выражением, например, 'today' или 'now'.
Правило также может принимать в качестве параметра имя другого
поля формы, тогда сравнение будет выполняться между значениями
двух полей.
Синтаксис
<?php
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'field' => 'before:date',
]);
?>
Пример
Проверим, что дата события предшествует текущей дате:
<?php
use Illuminate\Support\Facades\Validator;
$data = ['event_date' => '2024-12-31'];
$validator = Validator::make($data, [
'event_date' => 'before:2025-01-01',
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo $res;
?>
Результат выполнения кода:
"Validation passed"
Пример
Используем относительное время 'today' для проверки,
что дата доставки не позднее текущего дня:
<?php
use Illuminate\Support\Facades\Validator;
$data = ['delivery_date' => '2026-09-06'];
$validator = Validator::make($data, [
'delivery_date' => 'before:today',
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo $res;
?>
Результат выполнения кода:
"Validation passed"
Пример
Сравним два поля формы: дата начала должна быть раньше даты окончания:
<?php
use Illuminate\Support\Facades\Validator;
$data = [
'start_date' => '2025-01-01',
'end_date' => '2025-12-31',
];
$validator = Validator::make($data, [
'start_date' => 'required|date',
'end_date' => 'required|date|after:start_date',
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo $res;
?>
Результат выполнения кода:
"Validation passed"
Пример
Проверим дату рождения, которая должна быть раньше указанного предела:
<?php
use Illuminate\Support\Facades\Validator;
$data = ['birthday' => '1990-05-15'];
$validator = Validator::make($data, [
'birthday' => 'before:2005-01-01',
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo $res;
?>
Результат выполнения кода:
"Validation passed"
Пример
Валидация с использованием правила before внутри класса FormRequest:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class EventRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'event_date' => 'required|date|before:tomorrow',
'event_time' => 'required|date_format:H:i',
];
}
public function messages()
{
return [
'event_date.before' => 'The event date must be before tomorrow.',
];
}
}
?>
Смотрите также
-
правило
after,
которое проверяет, что дата следует за указанным значением -
правило
after_or_equal,
которое проверяет, что дата не раньше указанной -
правило
before_or_equal,
которое проверяет, что дата не позже указанной -
правило
date,
которое проверяет, что значение является корректной датой