في هذا الدرس 6تصفّح المواضيع
لتزويد واجهات العرض بالبيانات الديناميكية، نمرر مصفوفة ترابطية كمعامل ثانٍ لدالة العرض حيث يتحول كل مفتاح فيها إلى متغير مستقل داخل القالب. كما تُستخدم دالة compact في PHP بكثرة لتجميع متغيرات المتحكم في مصفوفة ترابطية مختصرة.
- تحويل المفاتيح لمتغيرات (Key Mapping): يتحول كل مفتاح نصي في المصفوفة الممررة إلى متغير يحمل نفس الاسم في القالب.
- دالة التجميع السريع (compact Helper): تنشئ مصفوفة ترابطية تلقائياً من أسماء المتغيرات المحلية داخل دالة المتحكم.
- بيانات مسار العرض (Route::view Data): تقبل دالة Route::view مصفوفة بيانات كمعامل ثالث للصفحات البسيطة.
<?php
public function show()
{
$title = 'Featured Laptops';
$stock = 24;
return view('shop.show', compact('title', 'stock'));
}
كبديل مرن لتمرير المصفوفة، يمكنك تسلسل دالة with على كائن الواجهة لإرفاق متغير واحد أو مصفوفة قيم إضافية. يفيد هذا الأسلوب المتسلسل بشكل خاص عند رغبتك في إرفاق متغيرات إضافية بناءً على شروط معينة قبل إرجاع الواجهة.
- إرفاق زوج مفتاح وقيمة (Key-Value Pair): تضيف دالة with متغيراً جديداً بالاسم والقيمة المحددين إلى نطاق القالب.
- التسلسل البرمجي (Fluent Chaining): يمكن ربط عدة استدعاءات لدالة with بالتتابع على نفس كائن الواجهة.
- قبول المصفوفات (Array Merging): تقبل دالة with مصفوفة ترابطية كاملة لدمج جميع مفاتيحها دفعة واحدة.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/invoice', function () {
return view('billing.invoice')
->with('invoiceNumber', 'INV-2026')
->with('currency', 'USD');
});
تحتاج بعض القيم العامة مثل اسم المنصة أو بريد الدعم الفني لأن تكون متاحة في جميع قوالب الموقع دون تكرار تمريرها في كل متحكم. يتيح استدعاء View::share داخل دالة boot في مزود الخدمة مشاركة المتغير عالمياً مع كل واجهة.
- التسجيل المركزي (AppServiceProvider::boot): تُوضع أوامر المشاركة العامة داخل دالة الإقلاع في مزود الخدمة الرئيسي.
- التوفر الشامل (Global Scope): تصبح المتغيرات المشتركة متاحة تلقائياً في كافة القوالب الرئيسية والفرعية.
- مخصص للقيم الخفيفة (Lightweight Data): يُفضل قصر View::share على القيم البسيطة لتجنب إبطاء الطلبات التي لا تعرض واجهات.
<?php
use Illuminate\Support\Facades\View;
public function boot(): void
{
View::share('supportEmail', '[email protected]');
}
بخلاف المشاركة العامة التي تعمل في كل طلب، لا يتم تنفيذ View Composer إلا لحظة عرض القالب المستهدف فعلياً. يمكنك ربط دالة التجهيز بقالب واحد أو مصفوفة قوالب أو نمط شامل باستخدام رمز النجمة.
- التنفيذ عند الحاجة (Lazy Execution): لا يعمل كود التجهيز إلا عند استدعاء الواجهة المرتبطة به فعلياً.
- الربط الموجه (Targeted Views): يمكنك استهداف قالب محدد أو مجموعة قوالب تشترك في نفس المجلد عبر النجمة.
- حقن كائن الواجهة (View Injection): تستقبل الدالة كائن الواجهة الحالي وتزوده بالبيانات عبر دالة with.
<?php
use Illuminate\Support\Facades\View;
View::composer('partials.nav', function ($view) {
$view->with('unreadAlerts', 3);
});
عند تعقد منطق تجهيز البيانات المشتركة مثل قوائم الأقسام أو شريط الإشعارات، يُفضل فصله في كلاس مستقل داخل مجلد App\View\Composers. يقوم حاوي الخدمات بإنشاء الكلاس تلقائياً مما يتيح لك حقن أي خدمات مطلوبة في دالة الباني.
- دالة التجهيز القياسية (compose Method): يحتوي كلاس المؤلف على دالة compose تستقبل كائن الواجهة لتمرير المتغيرات.
- حقن الخدمات بالباني (Constructor DI): يحل حاوي الخدمات اعتماديات الكلاس تلقائياً عبر دالة الباني.
- تسجيل نظيف ومختصر (Class Registration): يُربط الكلاس بالقالب في سطر واحد داخل AppServiceProvider.
<?php
class SidebarComposer
{
public function compose($view): void
{
$view->with('activeUsersCount', 42);
}
}
يمنع اختيار الطريقة الصحيحة لتمرير البيانات تكرار الكود في المتحكمات ويحافظ على سرعة استجابة التطبيق. قارن في الجدول التالي بين الأساليب الأربعة لتمرير ومشاركة البيانات عبر واجهات Laravel.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| متغيرات الصفحة الفردية | الاعتماد على المتغيرات العامة في PHP لنقل البيانات للقالب | تمرير مصفوفة ترابطية منظمة أو compact مباشرة لدالة العرض |
| بيانات القوائم المشتركة | تكرار كتابة كود جلب القائمة العلوية في عشرين متحكماً مختلفاً | ربط كلاس مخصص عبر View::composer يعمل تلقائياً عند عرض القائمة |
| الثوابت العامة للموقع | إعادة تمرير اسم الموقع والإعدادات الثابتة في كل إجراء | مشاركتها مرة واحدة عبر View::share داخل مزود الخدمة |
| تنظيم كود التجهيز | تكديس عشرات الدوال المغلقة الضخمة داخل AppServiceProvider | فصلها في كلاسات نظيفة قابلة للاختبار داخل App\View\Composers |
<?php
use App\View\Composers\SidebarComposer;
use Illuminate\Support\Facades\View;
// In AppServiceProvider::boot()
View::share('siteCurrency', 'SAR');
View::composer('nav', SidebarComposer::class);
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «تمرير البيانات ومشاركتها عبر واجهات العرض في Laravel» مفاهيم تمرير المصفوفات إلى واجهات العرض، وتمرير المتغيرات للواجهة بدالة with، ومشاركة البيانات العامة بين الواجهات وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «تجميع وربط ملفات الأصول عبر أداة Vite في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Passing Data تمرير البيانات
- تمرير المتغيرات والمصفوفات من المتحكم إلى العرض ومشاركة البيانات العامة بين الواجهات عبر View::share و View Composers.
- للمراجعة
- 02 Passing Associative Arrays to Views تمرير المصفوفات إلى واجهات العرض
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تمرير المصفوفات إلى واجهات العرض في إطار العمل Laravel 12.
- للمراجعة
- 03 Chaining Data with View Method تمرير المتغيرات للواجهة بدالة with
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تمرير المتغيرات للواجهة بدالة with في إطار العمل Laravel 12.
- للمراجعة
- 04 Sharing Global Data Across Views مشاركة البيانات العامة بين الواجهات
- المفهوم الهندسي والتطبيق العملي المباشر لقسم مشاركة البيانات العامة بين الواجهات في إطار العمل 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 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تمرير المتغيرات للواجهة بدالة with» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من تمرير المصفوفات إلى واجهات العرض في إطار العمل Laravel 12؟
يسهم تمرير المصفوفات إلى واجهات العرض في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تمرير المتغيرات للواجهة بدالة with» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة مشاركة البيانات العامة بين الواجهات بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة مشاركة البيانات العامة بين الواجهات.
لماذا يُعد تطبيق تخصيص البيانات عبر View Composers مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق بناء كلاسات View Composer مستقلة في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مقارنة طرق تمرير ومشاركة البيانات؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.