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

تمرير البيانات ومشاركتها عبر واجهات العرض في LaravelPassing and Sharing Data Across Laravel Views

تمرير المتغيرات والمصفوفات من المتحكم إلى العرض ومشاركة البيانات العامة بين الواجهات عبر View::share و View Composers.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

لتزويد واجهات العرض بالبيانات الديناميكية، نمرر مصفوفة ترابطية كمعامل ثانٍ لدالة العرض حيث يتحول كل مفتاح فيها إلى متغير مستقل داخل القالب. كما تُستخدم دالة compact في PHP بكثرة لتجميع متغيرات المتحكم في مصفوفة ترابطية مختصرة.

  • تحويل المفاتيح لمتغيرات (Key Mapping): يتحول كل مفتاح نصي في المصفوفة الممررة إلى متغير يحمل نفس الاسم في القالب.
  • دالة التجميع السريع (compact Helper): تنشئ مصفوفة ترابطية تلقائياً من أسماء المتغيرات المحلية داخل دالة المتحكم.
  • بيانات مسار العرض (Route::view Data): تقبل دالة Route::view مصفوفة بيانات كمعامل ثالث للصفحات البسيطة.
مخطط معماري يوضح تمرير البيانات ومشاركتها عبر واجهات العرض في Laravel في إطار العمل Laravel 12
PHP
<?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
<?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
<?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
<?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
<?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
<?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

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

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

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

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. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تمرير المتغيرات للواجهة بدالة with» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من تمرير المصفوفات إلى واجهات العرض في إطار العمل Laravel 12؟

يسهم تمرير المصفوفات إلى واجهات العرض في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تمرير المتغيرات للواجهة بدالة with» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة مشاركة البيانات العامة بين الواجهات بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة مشاركة البيانات العامة بين الواجهات.

04

لماذا يُعد تطبيق تخصيص البيانات عبر View Composers مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق بناء كلاسات View Composer مستقلة في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مقارنة طرق تمرير ومشاركة البيانات؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.