Валідність форм у веб-додатках вимагає дбайливого підходу до взаємозалежних полів. Правило валідації prohibited_if у Laravel пропонує елегантне рішення для умовного обмеження введення даних залежно від інших значень полів. Давайте розглянемо, як реалізувати цю потужну функцію у ваших додатках.
Правило валідації prohibited_if дозволяє вам визначити, коли певні поля мають залишатися порожніми або відсутніми залежно від конкретних умов. Це особливо корисно при створенні динамічних форм з взаємозалежними полями.
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'freelance_company' => 'prohibited_if:type,individual',
'type' => 'required|in:individual,business'
]);
Розгляньмо, як реалізувати систему реєстрації членства з динамічними вимогами полів:
<?php
namespace App\Http\Controllers;
use App\Models\Membership;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class MembershipController extends Controller
{
public function store(Request $request)
{
$request->validate([
'membership_type' => 'required|in:personal,corporate',
'full_name' => 'required|string|max:255',
'organization_name' => [
'prohibited_if:membership_type,personal',
'required_if:membership_type,corporate',
'string',
'max:255',
],
'organization_size' => [
'prohibited_if:membership_type,personal',
'required_if:membership_type,corporate',
'integer',
'min:1',
],
'tax_id' => [
Rule::prohibitedIf(fn() =>
$request->membership_type === 'personal' ||
$request->country !== 'US'
),
'string',
'size:9',
],
], [
'organization_name.prohibited_if' => 'Дані про організацію не повинні надаватися для особистого членства.',
'tax_id.prohibited_if' => 'Номер податкового ідентифікаційного коду потрібен лише для корпоративного членства з США.',
]);
Membership::create($request->validated());
return response()->json([
'message' => 'Членство успішно створено'
]);
}
}
Ця реалізація демонструє:
Ви можете розширити цю можливість, врахувавши кілька умов:
'business_license' => [
Rule::prohibitedIf(fn() =>
$request->membership_type === 'personal' ||
!in_array($request->business_type, ['retail', 'franchise'])
),
'required_if:business_type,retail,franchise',
'string',
]
Правило prohibited_if дозволяє створювати складну логіку валідації форм, зберігаючи при цьому чистий і зрозумілий код. Цей підхід забезпечує коректну обробку введених даних користувачами з урахуванням контексту
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю
Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!