Правило timezone
Правило timezone применяется к полям формы
или запросам валидации и проверяет, что переданное
значение является допустимым идентификатором временной
зоны из списка, поддерживаемого PHP. Это может быть
название зоны типа 'Europe/Moscow',
'America/New_York' или аббревиатура типа
'UTC'. Правило не принимает дополнительных
параметров.
Синтаксис
<?php
'timezone' => 'required|timezone'
?>
Пример использования в контроллере
Давайте проверим, что переданное поле 'timezone'
содержит корректную временную зону:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'timezone' => 'required|timezone'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Valid timezone']);
}
}
?>
Пример работы с допустимыми значениями
Рассмотрим валидацию поля с различными корректными идентификаторами временных зон:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class TimezoneController extends Controller
{
public function validate(Request $request)
{
$rules = [
'timezone' => 'required|timezone'
];
$data = [
'Europe/Moscow',
'America/New_York',
'UTC'
];
foreach ($data as $tz) {
$validator = Validator::make(['timezone' => $tz], $rules);
if ($validator->passes()) {
echo $tz . ' is valid';
}
}
}
}
?>
Результат выполнения кода:
"Europe/Moscow is valid"
"America/New_York is valid"
"UTC is valid"
Пример работы с некорректными значениями
Проверим, что значения, не являющиеся временными зонами, отвергаются валидацией:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class TimezoneController extends Controller
{
public function invalid(Request $request)
{
$rules = [
'timezone' => 'required|timezone'
];
$data = [
'Invalid/Timezone',
'12345',
'UTC+10'
];
foreach ($data as $tz) {
$validator = Validator::make(['timezone' => $tz], $rules);
if ($validator->fails()) {
echo $tz . ' is invalid';
}
}
}
}
?>
Результат выполнения кода:
"Invalid/Timezone is invalid"
"12345 is invalid"
"UTC+10 is invalid"
Пример использования в Form Request
Создадим отдельный класс запроса для проверки временной зоны пользователя:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class UserTimezoneRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'timezone' => 'required|timezone'
];
}
public function messages()
{
return [
'timezone.required' => 'The timezone field is required.',
'timezone.timezone' => 'The timezone must be a valid timezone identifier.'
];
}
}
?>
Смотрите также
-
правило
date,
которое проверяет, что значение является корректной датой -
правило
date_format,
которое проверяет соответствие даты формату -
правило
after,
которое проверяет, что дата позже указанного значения -
правило
before,
которое проверяет, что дата раньше указанного значения