Laravel / أساسي: أسس الطلب والبيانات / الدرس 2
المسارات والمعاملات والعناوين المولدة
عرّف عقد المسار بالطريقة والعنوان والمعامل والاسم. ميّز المطابقة من التصريح وولد الروابط دون نشر مسارات ثابتة بالتطبيق.
في هذه الصفحة
أهداف الدرس
- تتبع المطابقة وقيود المعامل.
- استخدام الأسماء كعقد روابط مصان.
- شرح حدود ربط النموذج والوسيط.
المسار أكثر من نص يشبه العنوان
يربط المسار طرق HTTP ونمط URI بفعل. لا تنشئ قراءة GET حجزاً بسبب معامل. راجع الترتيب والأنماط المتداخلة وقيد المعرف والاسم عند الحاجة. لا تثبت المطابقة إذن المستخدم؛ يملك الوسيط والسياسة ذلك. سمّ المسارات لتعتمد القوالب والتحويلات عقداً ثابتاً لا نسخ المسارات بملفات كثيرة.
فحص المطابقة دون إرسال تطبيق
تحوي المجموعة مسار دورة مقيداً. تختار مطابقة طلب مصطنع المسار وتكشف id دون متحكم ووسيط وقاعدة وشبكة. يفيد ذلك القاعدة لا سلوك الويب كله. أضف رفض المعامل وتكامل المجموعة عند الحاجة. ميّز عدم العثور من استثناء المتحكم رغم تشابه فشل الصفحة.
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
$routes = new Illuminate\Routing\RouteCollection();
$route = new Illuminate\Routing\Route(['GET'], 'courses/{id}', fn() => 'unused');
$route->where('id', '[0-9]+')->name('courses.show');
$routes->add($route);
$request = Illuminate\Http\Request::create('https://learning.example/courses/7', 'GET');
$matched = $routes->match($request);
echo $matched->getName(), ' ', $matched->parameter('id'), PHP_EOL;
courses.show 7
لا ينفذ الاستدعاء؛ فيثبت الاختيار والنص لا الدورة المحملة أو الإذن.
يعثر الربط على البيانات وتقرر السياسة الوصول
يحول ربط النموذج القيمة إلى نموذج بقواعد، وقد يصير الغائب عدم العثور لكن الموجود غير مصرح تلقائياً. يحتاج المتداخل نطاقاً يمنع طفلاً خارج أبيه. اختبر المحذوف منطقياً والمفتاح المخصص والمستأجر. ليس القيد العددي ملكية. راجع إخفاء الوجود ونسق الرد مع الخصوصية.
توليد الرابط المسمى بمعاملات صريحة
يبني المولد من الاسم والمعاملات العنوان. يثبت المثال أصلاً مصطنعاً ولا يتصل. تحتاج الأصول والوكيل وHTTPS واللغة إعداداً وفحصاً منفصلين. لا يمنح الرابط الإذن. لا تضع أسراراً ومعرف جلسة بالاستعلام ولا تقبل تحويلات اعتباطية دون سماح. تساعد الأسماء حين تصان مراجعها ومعاملاتها معاً.
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
$routes = new Illuminate\Routing\RouteCollection();
$route = new Illuminate\Routing\Route(['GET'], 'courses/{id}', fn() => 'unused');
$route->name('courses.show');
$routes->add($route);
$request = Illuminate\Http\Request::create('https://learning.example', 'GET');
$urls = new Illuminate\Routing\UrlGenerator($routes, $request);
echo $urls->route('courses.show', ['id' => 7]), PHP_EOL;
https://learning.example/courses/7
لا يرسل طلباً؛ ويفحص الاسم والمعامل بهذه المجموعة المملوكة.
تشخيص أول حد توجيه فاشل
سجل الطريقة والمسار الفعلي والمضيف والقيود والاسم والوسيط لـ404 أو405. قارن التعريف قبل المتحكم والقاعدة. قد يحفظ مخبأ التوجيه القديم ولا يعد حذف كل مخبأ تشخيصاً. افحص البيئة وإجراء البناء. غطِّ الطرق والمعاملات والروابط والربط المحدود، وميّز المجموعة المحلية من HTTP الكامل.
الأخطاء الشائعة وإصلاحها
اعتبار المعرف العددي ملكية
- لماذا يحدث؟
- الخلط بين قيد المسار والإذن.
- كيف تصلحه؟
- تطبيق نطاق القراءة وسياسة المورد.
- كيف تتجنب تكراره؟
- اختبار مالك آخر وعدم تطابق الأب والابن.
تغيير الاسم دون الروابط
- لماذا يحدث؟
- عدم صيانة الاسم والمعامل كوحدة.
- كيف تصلحه؟
- تحديث المراجع واختبارات التوليد معاً.
- كيف تتجنب تكراره؟
- استخدام أسماء ثابتة ومعاملات صريحة.
إعادة استعلام القاعدة لكل404
- لماذا يحدث؟
- خلط المطابقة بفشل النموذج والفعل.
- كيف تصلحه؟
- تتبع الطريقة والمسار والمطابقة والربط والفعل.
- كيف تتجنب تكراره؟
- حفظ تكرار توجيه مصطنع صغير.
اختبر فهمك
1. ماذا تثبت مطابقة /courses/7 محلياً؟
اعرض الحل المشروح
تثبت اختيار الاسم واستخراج النص7 لا نموذجاً أو وسيطاً أو إذناً أو HTTP. أضف كل حد دون تعميم المطابقة.
2. ينتمي معرف دورة لمؤسسة أخرى. ما الفحص اللازم؟
اعرض الحل المشروح
قيد القراءة بالمؤسسة أو العلاقة وصرح للمورد الفعلي. لا يكفي العدد والعثور. افحص الرفض الآمن بلا كشف أو تعديل.
أهم ما تعلمته
- تجيب المطابقة والربط والإذن عن أسئلة مختلفة.
- يحتاج عقد العنوان المسمى معاملات وأدلة مصانة.