في بوابة مشاريع افتراضية، يعرض المسار مؤسسة ثم مشروعًا. يفتح المستخدم رابط مشروعه بصورة طبيعية، لكن ماذا يحدث إذا استبدل معرف المشروع بمعرف مشروع معروف في مؤسسة أخرى؟ يجب أن يحسم التطبيق تبعية المشروع للأب الوارد في المسار قبل تقديم تفاصيله.
اجعل حل المعرف يمر عبر العلاقة
يوضح Laravel أن scopeBindings يتيح تقييد ربط الطفل بالأب في المسارات المتداخلة حتى عند عدم استخدام مفتاح مخصص. راجع العلاقة التي يستنتجها الإطار من اسم المعامل، واختبرها حسب نماذجك إذا استخدمت تسمية أو علاقة مخصصة. يفترض المثال مؤسسة لها مجموعة مشاريع، وكل مشروع يُحل داخلها.
صمّم تجربة تغير عنصرًا واحدًا
أنشئ مؤسستين تجريبيتين ومشروعًا لكل منهما. افتح رابطًا يطابق المؤسسة ومشروعها، ثم غيّر معرف المشروع وحده. مع الربط المقيد، يفشل حل المشروع داخل المؤسسة ويعود المسار بسلوك عدم العثور الافتراضي. اختبر المسار مباشرة في طلب HTTP حتى لا يحجب تنقل الواجهة هذا السيناريو.
طبّق التفويض بعد حل التبعية
قد يكون المشروع تابعًا للمؤسسة الواردة في الرابط بينما المستخدم نفسه لا يملك إذن المشاهدة أو التعديل. اختبر هذه الحالة بحساب منفصل وتحقق من سلوك الرفض الذي تختاره سياسة التطبيق. أعد التجربة على مسارات الحفظ والتنزيل أيضًا، لأن نجاح حماية صفحة العرض لا يغطي كل نقاط الدخول.
راجع الاستثناءات ومسارات التعارض
إذا كان للإدارة مسار يقصد العثور على مشروع عبر المؤسسات، افصله بسياسة واضحة واختبر الصلاحية داخله. راجع أي استخدام لـ withoutScopedBindings وأي تخصيص لحل المعرف. سلّم مصفوفة تربط تبعية المشروع ودور المستخدم والعملية المطلوبة بالاستجابة المتوقعة، من دون استخدام سجلات حقيقية.
يمكن تطبيق الاختبارات ضمن المراجعة التقنية وتطوير أنظمة الشركات.
المرجع الفني Laravel Scoped Bindings.
صورة توضيحية أصلية مرتبطة بالمثال.




