في هذا الدرس 6تصفّح المواضيع
عندما تتضخم النماذج وتزداد حقولها، فإن وضع مصفوفات التحقق داخل المتحكم يربك الكود ويخل بمبدأ المسؤولية الواحدة. يعالج Laravel ذلك عبر فئات FormRequest المستقلة التي تولد بأمر Artisan لتغليف فحص الصلاحية وشروط التحقق قبل دخول المتحكم.
- أمر التوليد (make:request): إنشاء كلاس تحقق مخصص داخل مجلد app/Http/Requests.
- الحقن التلقائي (Type-Hinting): بمجرد تحديد نوع المعامل في المتحكم يشغل الحاوي عملية التحقق تلقائياً.
- متحكمات نظيفة (Slim Controllers): إبقاء دوال المتحكم مركزة على منطق الأعمال فقط بعد ضمان سلامة البيانات.
// php artisan make:request StoreOrderRequest
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreOrderRequest extends FormRequest
{
}
تستخدم رسائل الخطأ الافتراضية الأسماء البرمجية للحقول، وهو ما قد يبدو غير مألوف للمستخدم النهائي خصوصاً في الواجهات العربية. يتيح لك تجاوز دالتي messages و attributes داخل الفئة تخصيص نصوص الأخطاء واستبدال أسماء الحقول بأوصاف واضحة.
- تخصيص الرسائل (messages): ربط مفتاح الحقل والقاعدة مثل email.required بنص خطأ مخصص وواضح.
- تعريب الأسماء (attributes): استبدال العنصر النائب :attribute في جميع الرسائل بالاسم المقروء للحقل.
- تنظيم النصوص (Clean Organization): عزل رسائل التنبيه وأسماء الحقول داخل فئة الطلب بعيداً عن المتحكم.
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): دالة مكملة تعمل فور نجاح التحقق لإجراء أي تحويل نهائي على البيانات.
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): منع أي معاملات إضافية خبيثة مرسلة في الطلب من الوصول لعمليات الحفظ.
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 |
public function update(StoreOrderRequest $request)
{
$clean = $request->safe()->except(['notes']);
return redirect('/orders')
->with('updated', $clean['sku']);
}
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «فئات طلبات التحقق المخصصة Form Requests في Laravel» مفاهيم إنشاء فئات طلبات التحقق المخصصة، وتعريف قواعد التحقق وصلاحية الطلب، وتخصيص رسائل الخطأ وأسماء الحقول وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «رفع الملفات الآمن وأقراص التخزين والروابط الرمزية في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «إنشاء فئات طلبات التحقق المخصصة» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تعريف قواعد التحقق وصلاحية الطلب» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من إنشاء فئات طلبات التحقق المخصصة في إطار العمل Laravel 12؟
يسهم إنشاء فئات طلبات التحقق المخصصة في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تعريف قواعد التحقق وصلاحية الطلب» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة تخصيص رسائل الخطأ وأسماء الحقول بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تخصيص رسائل الخطأ وأسماء الحقول.
لماذا يُعد تطبيق تهيئة وتنظيف البيانات قبل التحقق مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق استرجاع البيانات الموثوقة بعد التحقق في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص دوال فئات التحقق المخصصة؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.