في هذا الدرس 6تصفّح المواضيع
نادراً ما تكتفي تطبيقات الويب الحديثة بالروابط الثابتة، بل تحتاج إلى التقاط معرفات ديناميكية مباشرة من أجزاء الرابط مثل رقم المنتج أو اسم المستخدم. في Laravel 12، نضع اسم المعامل داخل أقواس معقوفة مثل {id} ليقوم الموجه بتمرير القيمة الملتقطة مباشرة إلى معاملات دالة المسار.
- صياغة الأقواس المعقوفة (Curly Brace Syntax): كتابة المعامل الإلزامي مثل {id} داخل نص الرابط.
- إلزامية القيمة (Non-Empty Requirement): غياب المعامل الإلزامي من الرابط يمنع تطابق المسار ويعيد 404.
- تحديد نوع المتغير (Type-Hinted Arguments): استقبال القيمة في متغير محدد النوع مثل string أو int داخل الدالة.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/products/{id}', function (string $id) {
return 'Viewing Product ID: ' . $id;
});
يمكن لمسار واحد التقاط عدة أجزاء ديناميكية لتمثيل العلاقات المتداخلة مثل القسم والمنتج أو الدورة والدرس. يمرر موجه Laravel هذه القيم إلى دالة المعالجة بنفس ترتيب ظهورها في الرابط من اليسار إلى اليمين، بغض النظر عن أسماء المتغيرات في الدالة.
- التمرير حسب الترتيب (Positional Injection): يرتبط المعامل الأول في الرابط بالمتغير الأول في الدالة بالتتابع.
- عدم تكرار الأسماء (Unique Segment Names): يجب أن يحمل كل قوس معقوف داخل نفس الرابط اسماً فريداً.
- وضوح التسمية (Clear Naming Convention): يُنصح بمطابقة أسماء متغيرات الدالة مع أسماء معاملات الرابط لسهولة القراءة.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/courses/{course}/{lesson}', function (
string $course, string $lesson
) {
return ['course' => $course, 'lesson' => $lesson];
});
عندما يكون الجزء الأخير من الرابط اختيارياً مثل رقم الصفحة أو تصنيف الفلترة، نضع علامة استفهام بعد اسم المعامل داخل القوسين مثل {category?}. ويشترط عند تعريف أي معامل اختياري تزويد المتغير المقابل له في دالة PHP بقيمة افتراضية.
- علامة الاستفهام (Question Mark Suffix): كتابة {page?} تسمح بتطابق المسار سواء وُجدت القيمة في الرابط أم غابت.
- القيمة الافتراضية الإلزامية (Mandatory PHP Default): إسناد قيمة افتراضية للمتغير في الدالة يمنع أخطاء التشغيل.
- الموقع في نهاية الرابط (Trailing Position): توضع المعاملات الاختيارية في الجزء الأخير من مسار العنوان.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/archive/{year?}', function (
int $year = 2026
) {
return ['archive_year' => $year];
});
بدون قيود، يقبل المعامل {id} أي نص يمر في الرابط، مما قد يؤدي لتداخل المسارات عند طلب عنوان مثل /users/settings. تتيح دالة ->where فرض تعبير نمطي Regex على معامل واحد أو عدة معاملات لضمان عدم تطابق المسار إلا مع الصيغة الصحيحة.
- قيد لمعامل واحد (Single Constraint): استدعاء ->where('id', '[0-9]+') لحصر القيمة في الأرقام فقط.
- مصفوفة قيود (Array of Constraints): تمرير مصفوفة ترابطية لتقييد عدة معاملات في نفس المسار دفعة واحدة.
- الرد التلقائي 404 (Automatic 404 Fallback): إذا لم تتطابق الصيغة ولم يوجد مسار بديل يعيد الإطار حالة 404.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/invoices/{id}/{code}', function (
string $id, string $code
) {
return ['invoice' => $id, 'code' => $code];
})->where(['id' => '[0-9]+', 'code' => '[A-Z]{3}']);
بدلاً من تكرار كتابة التعابير النمطية اليدوية للأنماط الشائعة مثل الأرقام والحروف والمعرفات القياسية، يوفر Laravel 12 دوال تقييد جاهزة ومقروءة. تشمل هذه الدوال whereNumber وwhereAlpha وwhereUuid وwhereIn، بالإضافة لتعميم القيد على مستوى المشروع عبر Route::pattern.
- دوال الأنواع الجاهزة (Type Helpers): استخدام whereNumber للأرقام وwhereAlpha للحروف وwhereUuid للمعرفات.
- قائمة القيم المسموحة (Whitelist Helper): استخدام whereIn لحصر المعامل ضمن قائمة كلمات محددة مسبقاً.
- القيد العام الشامل (Global Route::pattern): تعريف قيد موحد لمعامل مثل id في دالة boot بمزود الخدمة.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/orders/{id}/{state}', function (
int $id, string $state
) {
return ['order' => $id, 'state' => $state];
})->whereNumber('id')->whereIn('state', ['new', 'ok']);
يساعد الجمع بين المعاملات الإلزامية والاختيارية ودوال التقييد المقروءة على تصفية الروابط غير الصالحة مبكراً قبل وصولها لمنطق التطبيق. استخدم الجدول المرجعي التالي لاختيار أداة التقييد الأنسب لكل معامل مسار.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو التقليدي | معيار Laravel 12 الحديث |
|---|---|---|
| استقبال قيم الرابط | الاعتماد على معاملات الاستعلام التقليدية مثل page.php?id=42 | مسارات نظيفة ومقروءة عبر الأقواس المعقوفة مثل /products/{id} |
| المعاملات الاختيارية | فحص وجود المتغير يدوياً عبر isset في بداية كل ملف | إضافة علامة الاستفهام {page?} مع قيمة افتراضية لمعامل الدالة |
| تقييد صيغة المدخلات | تكرار دوال preg_match اليدوية داخل منطق الصفحات | دوال متسلسلة معبرة مثل whereNumber وwhereAlpha وwhereIn |
| توحيد القيود المتكررة | نسخ نفس شروط التحقق الرقمي في عشرات الملفات | تعريف قيد عام موحد عبر Route::pattern في مزود الخدمة |
<?php
use Illuminate\Support\Facades\Route;
Route::get('/members/{user}/{tab?}', function (
string $user, string $tab = 'overview'
) {
return ['member' => $user, 'tab' => $tab];
})->whereAlphaNumeric('user')->whereAlpha('tab');
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «معاملات المسارات في Laravel وقيود التعابير النمطية» مفاهيم استقبال المعاملات الإلزامية بالرابط، وتمرير عدة معاملات ديناميكية بالمسار، والمعاملات الاختيارية بالمسارات وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «المسارات المسماة وتوليد الروابط في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Route Parameters معاملات المسارات
- استقبال المعاملات الإلزامية والاختيارية من الرابط وتقييد صيغتها بالتعابير النمطية والدوال المساعدة وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
- للمراجعة
- 02 Capturing Required URL Parameters استقبال المعاملات الإلزامية بالرابط
- المفهوم الهندسي والتطبيق العملي المباشر لقسم استقبال المعاملات الإلزامية بالرابط في إطار العمل Laravel 12.
- للمراجعة
- 03 Multiple Dynamic Route Segments تمرير عدة معاملات ديناميكية بالمسار
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تمرير عدة معاملات ديناميكية بالمسار في إطار العمل Laravel 12.
- للمراجعة
- 04 Optional Parameters and Defaults المعاملات الاختيارية بالمسارات
- المفهوم الهندسي والتطبيق العملي المباشر لقسم المعاملات الاختيارية بالمسارات في إطار العمل 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 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.