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

معاملات المسارات في Laravel وقيود التعابير النمطيةLaravel Route Parameters and Regular Expression Constraints

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

نادراً ما تكتفي تطبيقات الويب الحديثة بالروابط الثابتة، بل تحتاج إلى التقاط معرفات ديناميكية مباشرة من أجزاء الرابط مثل رقم المنتج أو اسم المستخدم. في Laravel 12، نضع اسم المعامل داخل أقواس معقوفة مثل {id} ليقوم الموجه بتمرير القيمة الملتقطة مباشرة إلى معاملات دالة المسار.

  • صياغة الأقواس المعقوفة (Curly Brace Syntax): كتابة المعامل الإلزامي مثل {id} داخل نص الرابط.
  • إلزامية القيمة (Non-Empty Requirement): غياب المعامل الإلزامي من الرابط يمنع تطابق المسار ويعيد 404.
  • تحديد نوع المتغير (Type-Hinted Arguments): استقبال القيمة في متغير محدد النوع مثل string أو int داخل الدالة.
مخطط معماري يوضح معاملات المسارات في Laravel وقيود التعابير النمطية في إطار العمل Laravel 12
PHP
<?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
<?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
<?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
<?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
<?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
<?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

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

0 / 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

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

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 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.