في هذا الدرس 6تصفّح المواضيع
تشترك صفحات الموقع الواحد في الهيكل الخارجي مثل وسم الرأس وشريط التنقل والتذييل. تتيح لك وراثة القوالب في Blade تصميم قالب أب موحد داخل resources/views/layouts/app.blade.php وتحديد المناطق القابلة للاستبدال عبر توجيه @yield.
- مناطق الحقن المسماة (@yield): تحجز مكاناً باسم محدد في القالب الأب ليتم ملؤه من الصفحات الفرعية.
- القيمة الافتراضية (Default Fallback): يقبل التوجيه معاملاً ثانياً يُعرض تلقائياً إذا لم تُعرف الصفحة الفرعية ذلك القسم.
- وحدة الهيكل العام (Single Master File): أي تعديل في القالب الرئيسي ينعكس فوراً على جميع صفحات الموقع.
{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html>
<head><title>@yield('title', 'CloseTag')</title></head>
<body>
<main>@yield('content')</main>
</body>
</html>
ترث الصفحة الفرعية التخطيط الرئيسي بوضع توجيه @extends في أعلى الملف ثم تعبئة المناطق المحجوزة باستخدام توجيه @section. وللنصوص القصيرة مثل عنوان الصفحة، يمكنك تمرير النص كمعامل ثانٍ لتوجيه @section مباشرة دون الحاجة لوسم إغلاق.
- إعلان الوراثة (@extends): يربط الصفحة الفرعية بالقالب الأب باستخدام الصيغة النقطية.
- القسم المختصر والكتلي (@section): يقبل نصاً مباشراً في سطر واحد أو كتلة HTML كاملة تنتهي بـ @endsection.
- الدمج مع محتوى الأب (@parent): يحتفظ بمحتوى القسم الأصلي في القالب الأب ويضيف عليه بدلاً من استبداله.
@extends('layouts.app')
@section('title', 'Course Catalog')
@section('content')
<h1>All Courses</h1>
<p>Browse our interactive curriculum.</p>
@endsection
لتقسيم الواجهات الكبيرة إلى أجزاء صغيرة يسهل صيانتها، نستخدم توجيه @include لتضمين قالب فرعي داخل أي صفحة. يرث القالب المضمن تلقائياً جميع المتغيرات المتاحة في الصفحة الأب، كما يمكنك تمرير مصفوفة متغيرات إضافية مخصصة له.
- وراثة المتغيرات (@include): يصل القالب الفرعي لمتغيرات الأب مع إمكانية تزويده بمصفوفة بيانات إضافية.
- التضمين الآمن (@includeIf): يضمن عدم توقف الصفحة إذا كان ملف القالب الفرعي غير موجود.
- التضمين المشروط (@includeWhen): يدرج القالب الفرعي فقط عند تحقق الشرط المنطقي الممرر له.
<header>
@include('partials.top-nav', ['theme' => 'dark'])
</header>
@includeWhen($hasBanner, 'partials.promo-banner')
@includeIf('partials.custom-footer')
تحتاج بعض الصفحات الفرعية أحياناً إلى مكتبة JavaScript أو ملف تنسيق خاص لا تحتاجه بقية صفحات الموقع. تتيح مكدسات Blade تعريف موضع @stack في القالب الرئيسي، بينما تدفع الصفحات الفرعية وسومها إليه عبر توجيه @push مع منع التكرار بتوجيه @once.
- موضع المكدس (@stack): يُوضع في القالب الرئيسي لتجميع وعرض كافة الأكواد المدفوعة إليه.
- الإضافة في النهاية أو البداية (@push / @prepend): يضيف @push الكود لنهاية المكدس بينما يضعه @prepend في أوله.
- منع التكرار (@once): يضمن عدم تكرار إدراج السكربت حتى لو تكرر القالب الفرعي داخل حلقة.
{{-- In layout before </body>: @stack('scripts') --}}
@once
@push('scripts')
<script src="/js/chart-widget.js"></script>
@endpush
@endonce
تؤدي كتابة جمل الشرط داخل سمة class أو style في عناصر HTML إلى تشويه الكود وصعوبة قراءته. يوفر Laravel توجيهي @class و@style اللذين يقبلان مصفوفة ترابطية تُدرج منها الأصناف أو الأنماط التي يتحقق شرطها المنطقي فقط.
- الأصناف الشرطية (@class): تُضاف النصوص غير المشروطة دائماً، بينما تُدرج الأصناف المربوطة بشرط عند تحققه فقط.
- الأنماط الشرطية (@style): يبني سمة التنسيق المضمنة ديناميكياً بناءً على الشروط المنطقية.
- نظافة وسوم HTML (Readable Markup): يخلصك تماماً من العبارات الشرطية المعقدة داخل علامات تنصيص السمات.
<li @class([
'nav-item',
'active' => $isActive,
'text-muted' => $isDisabled,
])>
<span @style(['color:red' => $isActive])>Link</span>
</li>
يتيح الجمع بين القوالب الرئيسية والقوالب الفرعية ومكدسات الأصول وتوجيهات التنسيق بناء واجهات منظمة وقابلة للتوسع. استعن بالجدول المرجعي التالي لاختيار التوجيه الهيكلي المناسب لكل مهمة في صفحاتك.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| هيكل الصفحة العام | نسخ ولصق وسوم الرأس والقائمة والتذييل في عشرات الملفات | قالب رئيسي موحد بتوجيه @yield ووراثته عبر @extends |
| تضمين الأجزاء المشتركة | استخدام دوال require التقليدية بمسارات نسبية عرضة للانكسار | التضمين الذكي بالصيغة النقطية عبر @include و@includeWhen |
| سكربتات الصفحات الخاصة | تحميل المكتبات الثقيلة عالمياً في جميع صفحات الموقع | دفع السكربتات للصفحة المحتاجة فقط عبر @stack و@push |
| أصناف التنسيق الشرطية | كتابة عبارات شرطية ثلاثية معقدة داخل علامات تنصيص class | مصفوفة واضحة ومنظمة باستخدام التوجيه المدمج @class |
@extends('layouts.app')
@section('content')
@include('partials.breadcrumbs')
<div @class(['card', 'featured' => $isFeatured])>
<h2>Lesson Overview</h2>
</div>
@endsection
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «وراثة القوالب وتخطيطات الصفحات والقوالب الفرعية في Blade» مفاهيم تصميم القالب الرئيسي بتوجيه yield، ووراثة التخطيط وملء الأقسام الفرعية، وتضمين القوالب الفرعية بتوجيه include وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «مكونات Blade الحديثة وخصائص Props والفتحات Slots» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Blade Layouts وراثة القوالب
- بناء القالب الرئيسي للصفحات عبر @yield و @extends و @section وتضمين الأجزاء المشتركة بـ @include وإدارة الأكواد بـ @stack و @push.
- للمراجعة
- 02 Defining Master Layouts with Yield تصميم القالب الرئيسي بتوجيه yield
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تصميم القالب الرئيسي بتوجيه yield في إطار العمل Laravel 12.
- للمراجعة
- 03 Extending Layouts and Filling Sections وراثة التخطيط وملء الأقسام الفرعية
- المفهوم الهندسي والتطبيق العملي المباشر لقسم وراثة التخطيط وملء الأقسام الفرعية في إطار العمل Laravel 12.
- للمراجعة
- 04 Reusable Subviews with Blade Include تضمين القوالب الفرعية بتوجيه include
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تضمين القوالب الفرعية بتوجيه include في إطار العمل 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «تصميم القالب الرئيسي بتوجيه yield» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «وراثة التخطيط وملء الأقسام الفرعية» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من تصميم القالب الرئيسي بتوجيه yield في إطار العمل Laravel 12؟
يسهم تصميم القالب الرئيسي بتوجيه yield في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «وراثة التخطيط وملء الأقسام الفرعية» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة تضمين القوالب الفرعية بتوجيه include بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تضمين القوالب الفرعية بتوجيه include.
لماذا يُعد تطبيق إدارة أصول الصفحات عبر Stacks مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق توجيهات الأصناف والأنماط الشرطية في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع توجيهات التخطيط ووراثة القوالب؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.