انتقل إلى محتوى الدرس
الدرس 26
دورة إطار العمل Laravel

فئات طلبات التحقق المخصصة Form Requests في LaravelDedicated Form Request Validation Classes in Laravel

فصل قواعد التحقق المعقدة وتخصيص رسائل الأخطاء وأسماء الحقول داخل كلاسات FormRequest مستقلة وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

عندما تتضخم النماذج وتزداد حقولها، فإن وضع مصفوفات التحقق داخل المتحكم يربك الكود ويخل بمبدأ المسؤولية الواحدة. يعالج Laravel ذلك عبر فئات FormRequest المستقلة التي تولد بأمر Artisan لتغليف فحص الصلاحية وشروط التحقق قبل دخول المتحكم.

  • أمر التوليد (make:request): إنشاء كلاس تحقق مخصص داخل مجلد app/Http/Requests.
  • الحقن التلقائي (Type-Hinting): بمجرد تحديد نوع المعامل في المتحكم يشغل الحاوي عملية التحقق تلقائياً.
  • متحكمات نظيفة (Slim Controllers): إبقاء دوال المتحكم مركزة على منطق الأعمال فقط بعد ضمان سلامة البيانات.
مخطط معماري يوضح فئات طلبات التحقق المخصصة Form Requests في Laravel في إطار العمل Laravel 12
PHP
// php artisan make:request StoreOrderRequest
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreOrderRequest extends FormRequest
{
}

تحتوي كل فئة FormRequest مولدة على دالتين أساسيتين هما authorize و rules. تحدد دالة authorize بقيمة منطقية ما إذا كان المستخدم الحالي يملك صلاحية تنفيذ الطلب، بينما تعيد دالة rules مصفوفة شروط التحقق المطبقة على البيانات.

  • بوابة الصلاحية (authorize): تعيد true للسماح بالمرور أو false لإيقاف الطلب فوراً بكود 403 Forbidden.
  • مصفوفة الشروط (rules): تعيد قواعد التحقق التفصيلية التي تطبق على حقول الطلب.
  • قواعد ديناميكية (Dynamic Rules): إمكانية الوصول لبيانات الطلب أو معاملات المسار داخل دالة rules لبناء شروط ذكية.
PHP
public function authorize(): bool
{
    return true;
}
public function rules(): array
{
    return ['sku' => ['required', 'string', 'max:32']];
}

تستخدم رسائل الخطأ الافتراضية الأسماء البرمجية للحقول، وهو ما قد يبدو غير مألوف للمستخدم النهائي خصوصاً في الواجهات العربية. يتيح لك تجاوز دالتي messages و attributes داخل الفئة تخصيص نصوص الأخطاء واستبدال أسماء الحقول بأوصاف واضحة.

  • تخصيص الرسائل (messages): ربط مفتاح الحقل والقاعدة مثل email.required بنص خطأ مخصص وواضح.
  • تعريب الأسماء (attributes): استبدال العنصر النائب :attribute في جميع الرسائل بالاسم المقروء للحقل.
  • تنظيم النصوص (Clean Organization): عزل رسائل التنبيه وأسماء الحقول داخل فئة الطلب بعيداً عن المتحكم.
PHP
public function messages(): array
{
    return ['sku.required' => 'Enter a product SKU.'];
}
public function attributes(): array
{
    return ['sku' => 'Product SKU Code'];
}

كثيراً ما يرسل المستخدمون بيانات تحتاج إلى تنسيق مسبق مثل أحرف كبيرة في البريد الإلكتروني أو مسافات داخل أرقام الهواتف. تتيح لك دالة prepareForValidation داخل فئة الطلب تنظيف البيانات أو دمج حقول مشتقة قبل لحظة تشغيل قواعد التحقق.

  • التهيئة المسبقة (prepareForValidation): دالة خطافية تستدعى تلقائياً قبل بدء فحص القواعد بلحظات.
  • دمج التعديلات ($this->merge): تحديث قيم الحقول الحالية أو حقن قيم منسقة جديدة داخل الطلب.
  • ما بعد التحقق (passedValidation): دالة مكملة تعمل فور نجاح التحقق لإجراء أي تحويل نهائي على البيانات.
PHP
protected function prepareForValidation(): void
{
    $this->merge([
        'sku'  => strtoupper(trim((string) $this->sku)),
        'slug' => strtolower((string) $this->slug),
    ]);
}

بمجرد نجاح الفحص في فئة FormRequest، يبدأ تنفيذ دالة المتحكم مستقبلاً كائن الطلب الجاهز. يجب دائماً استخراج البيانات عبر دالة validated أو كائن safe بدلاً من دالة all لضمان عدم تسلل أي حقول غير مفحوصة إلى منطق التطبيق.

  • مصفوفة الموثوق (validated): إرجاع مصفوفة PHP تضم حصرياً الحقول التي خضعت للفحص في دالة rules.
  • الكائن الآمن (safe): إرجاع كائن ValidatedInput يوفر دوال مرنة مثل only و except لانتقاء الحقول.
  • دفاع متعدد الطبقات (Defense in Depth): منع أي معاملات إضافية خبيثة مرسلة في الطلب من الوصول لعمليات الحفظ.
PHP
public function store(StoreOrderRequest $request)
{
    $allClean = $request->validated();
    $subset   = $request->safe()->only(['sku']);
    return back()->with('sku', $subset['sku']);
}

تحول فئات FormRequest عملية التحقق من فحوصات إجرائية مبعثرة إلى كائنات برمجية منظمة وقابلة لإعادة الاستخدام والاختبار. راجع هذا الملخص لدوال دورة حياة الفئة وأدوات استرجاع البيانات الموثوقة لتوحيد معالجة الطلبات في تطبيقك.

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
حجم دالة المتحكمدوال متضخمة بعشرات أسطر الفحص والشروطفئة FormRequest مستقلة تحقن تلقائياً بتحديد النوع
تنظيف البيانات المسبقاستدعاء دوال trim و strtolower عشوائياً داخل المتحكمدالة prepareForValidation المركزية مع $this->merge
تخصيص نصوص الأخطاءخلط رسائل الخطأ النصية بمنطق الأعمالدالتا messages و attributes المخصصتان داخل فئة الطلب
استخلاص البياناتاستخدام $request->all غير الآمن الذي يمرر كل شيءقصر الاسترجاع على الحقول الموثوقة عبر validated و safe
PHP
public function update(StoreOrderRequest $request)
{
    $clean = $request->safe()->except(['notes']);
    return redirect('/orders')
        ->with('updated', $clean['sku']);
}
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «فئات طلبات التحقق المخصصة Form Requests في Laravel» مفاهيم إنشاء فئات طلبات التحقق المخصصة، وتعريف قواعد التحقق وصلاحية الطلب، وتخصيص رسائل الخطأ وأسماء الحقول وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «رفع الملفات الآمن وأقراص التخزين والروابط الرمزية في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Form Requests فئات التحقق
فصل قواعد التحقق المعقدة وتخصيص رسائل الأخطاء وأسماء الحقول داخل كلاسات FormRequest مستقلة وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
للمراجعة
02 Generating Form Request Classes إنشاء فئات طلبات التحقق المخصصة
المفهوم الهندسي والتطبيق العملي المباشر لقسم إنشاء فئات طلبات التحقق المخصصة في إطار العمل Laravel 12.
للمراجعة
03 Form Request Rules and Authorization تعريف قواعد التحقق وصلاحية الطلب
المفهوم الهندسي والتطبيق العملي المباشر لقسم تعريف قواعد التحقق وصلاحية الطلب في إطار العمل Laravel 12.
للمراجعة
04 Custom Validation Messages and Names تخصيص رسائل الخطأ وأسماء الحقول
المفهوم الهندسي والتطبيق العملي المباشر لقسم تخصيص رسائل الخطأ وأسماء الحقول في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «إنشاء فئات طلبات التحقق المخصصة» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تعريف قواعد التحقق وصلاحية الطلب» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من إنشاء فئات طلبات التحقق المخصصة في إطار العمل Laravel 12؟

يسهم إنشاء فئات طلبات التحقق المخصصة في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تعريف قواعد التحقق وصلاحية الطلب» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة تخصيص رسائل الخطأ وأسماء الحقول بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تخصيص رسائل الخطأ وأسماء الحقول.

04

لماذا يُعد تطبيق تهيئة وتنظيف البيانات قبل التحقق مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق استرجاع البيانات الموثوقة بعد التحقق في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص دوال فئات التحقق المخصصة؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.