إتقان التحقق الشرطي في Laravel 12

يوليو 7, 2025

إتقان التحقق الشرطي في Laravel 12

في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك بناء على قيمة حقل تاني. يعني لو في حقل بيتطلب يشترط فقط لما حاجة تحصل، مثلاً حقل "company_name" يظهر ويتطلب لو المستخدم اختار "متوظف"، أو حقل "credit_card_number" يظهر لو الاختيار كان "Credit Card". الموضوع بيدّي مرونة وسهولة في تصميم الفورمات.

🔍 ليه نستخدم التحقق الشرطي؟

  • لما تكون بعض الحقول مش دايمًا مطلوبة.
  • عشان تبقى الفورمة ديناميكية ومش بتطلب حاجة مالهاش لازمة.
  • عشان تقدر تبني Multi-step Forms أو APIs بسهولة.

🛠 أدوات Laravel 12 للتحقق الشرطي

  • required_if
  • required_with
  • Rule::when()

1. مثال عملي على required_if

// في Controller:
$request->validate([
  'employment_status' => 'required|in:employed,unemployed',
  'company_name' => 'required_if:employment_status,employed',
]);

لو المستخدم اختار employed، يبقى حقل company_name لازم يتعبّي.

2. مثال على required_with

// في Controller:
$request->validate([
  'shipping_address' => 'required_with:delivery_method',
  'delivery_method' => 'nullable|in:pickup,delivery',
]);

لو المستخدم اختار طريقة شحن، يبقى لازم يكتب عنوان الشحن.

3. مثال باستخدام Rule::when()


use Illuminate\Validation\Rule;

$request->validate([
  'payment_method' => 'required|in:credit_card,paypal',
  'credit_card_number' => [
    Rule::when($request->input('payment_method') === 'credit_card', ['required', 'numeric', 'digits:16']),
  ],
]);

لو الدفع كريدت كارد، يبقى لازم رقم بطاقتك.

📌 نصائح احترافية

  • جمع قواعد التحقق في FormRequest بدل الكنترولر إذا الموضوع كبير.
  • استعمل الميثودز ساعد زي sometimes() أو bail() للتحكم أحسن بالتنفيذ.
  • اختبر الفورم ديالك حتى لو بغض النظر عن الواجهة، تزبط قواعد التحقق.

📚 ملخص سريع

التحقق الشرطي بيخلي الفورم بقى ذكي وتتفاعل مع الحالة اللي المستخدم فيها. في Laravel 12 عندك أكتر من طريقة تتحكم بيها، وبأمثلة عملية، تقدر تطبّق الحالة اللي محتاجها بالضبط.

المدونة

وقّف نسخ الكود! اتعلم تستخدم Traits في Laravel صح

يوليو 01, 2025

🚫 وقّف نسخ الكود! لو عندك نفس المنطق في كذا Model أو Controller زي Slug أو Logging، Traits في Laravel هتوفر عليك تعب الكتابة والتكرار. 1. إيه هو...

مقارنة CSS: طبقات vs BEM vs Utility Classes

يونيو 26, 2025

مقارنة CSS: Cascade Layers و BEM و Utility Classes المقالة بتتكلّم عن ٣ طرق لإدارة الـ specificity في CSS – BEM والـ utility‑first classes وك...

Laravel 12.19: استخدام Attributes لتنظيم الـ Query Builder

يوليو 07, 2025

Laravel 12.19: استخدام Attributes تنظّم Query Builder في Laravel 12.19، دلوقتي تقدر تستخدم Attribute اسمه #[UseEloquentBuilder] علشان تحدد Query Bu...

تعزيز PHP Enums باستخدام archtechx/enums

يوليو 01, 2025

تعزيز PHP enums باستخدام حزمة archtechx/enums من PHP 8.1، ظهر نوع جديد اسمه “enums” بيخليك تعرف قيم ثابتة بأسماء مرمّزة زي statuses...

إزاي تستخدم Web Components ببساطة وذكاء

يوليو 06, 2025

إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...

لارافيل 12.16.0 - مميزات جديدة للمطورين

يونيو 03, 2025

لارافيل 12.16.0 - مميزات جديدة للمطورين 1. قاعدات تحقق جديدة: in_array_keys دلوقتي تقدر تتحقق إن الأراي فيه على الأقل مفتاح واحد من اللي انت محددهم...

The Ultimate Managed Hosting Platform