Правило declined
Правило declined применяется к полям формы для проверки,
что переданное значение является отрицательным или обозначает отказ.
Оно проходит валидацию для значений 'no', 'off',
0, false и '0'.
Это правило часто используется для полей-флажков (чекбоксов),
которые в HTML передают значение только при отметке.
Синтаксис
<?php
$rules = [
'field_name' => 'declined',
];
?>
Пример
Давайте создадим валидацию для поля согласия с условиями использования:
<?php
namespace AppHttpControllers;
use AppHttpRequests\UserRequest;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'agree' => 'declined',
]);
return $validated;
}
}
?>
Если пользователь отправит agree со значением 'on',
валидация пройдёт успешно. Если поле agree будет отсутствовать,
или его значение будет 'yes', валидация не пройдёт.
Пример
Рассмотрим работу правила declined
в FormRequest с кастомным сообщением:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class SettingRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'enable_notifications' => 'declined',
];
}
public function messages()
{
return [
'enable_notifications.declined' => 'Вы должны отключить уведомления.',
];
}
}
?>
Пример
Правило declined можно комбинировать
с другими правилами валидации:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class ProfileController extends Controller
{
public function update(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'subscribe' => 'declined',
'role' => 'required|in:user,admin',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['success' => true]);
}
}
?>
Пример
Правило declined можно использовать
для проверки отказа от участия в акции:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class PromoController extends Controller
{
public function subscribe(Request $request)
{
$validated = $request->validate([
'promo_opt_out' => 'declined',
'email' => 'required|email',
]);
$res = [
'status' => 'opt-out confirmed',
'email' => $validated['email'],
];
return response()->json($res);
}
}
?>
Результат выполнения кода при успешной валидации:
{
"status": "opt-out confirmed",
"email": "user@example.com"
}