در لاراول، برای استفاده از متغیرهای سراسری در تمام ویوها (global variables in views)، چند روش مختلف وجود داره که میتونی بسته به نیازت انتخاب کنی. این متغیرها میتونن اطلاعاتی مثل تنظیمات سایت، اطلاعات کاربر، یا دادههای ثابت مثل دستهبندیها باشن.
✅ روش ۱: استفاده از View Composer (مناسبترین روش)
View Composerها بهت اجازه میدن که هنگام رندر شدن ویو، دادههایی به اون ارسال کنی—چه برای یک ویو خاص، چه برای همه ویوها.
🛠 گام ۱: ساخت فایل Service Provider
🛠 گام ۲: ثبت در config/app.php
در آرایهی providers:
🛠 گام ۳: تعریف دادهی سراسری
در app/Providers/ViewServiceProvider.php:
💡 حالا در هر ویویی میتونی بنویسی:
✅ روش ۲: ارسال دستی از کنترلر به همه ویوها
اگر بخوای همهی کنترلرها یک متغیر خاص رو به ویو بفرستن:
گام ۱: استفاده از Middleware
در Middleware بنویس:
و در Kernel.php ثبتش کن داخل $middleware.
✅ روش ۳: استفاده از Service Container یا Facade
برای اطلاعاتی مثل تنظیمات سایت:
✅ روش ۴: از Blade Components استفاده کن
کامپوننتها میتونن دادههایی رو خودشون از مدلها بگیرن و بدون نیاز به ارسال از کنترلر، به صورت خودکار داده رو آماده کنن.
داخل Footer.php (کامپوننت):
✅ جمعبندی سریع
| روش | کاربرد | مناسب برای |
|---|---|---|
View::share() | ارسال داده سراسری | مقادیر ثابت (مثل نام سایت) |
View::composer('*', fn...) | دادههای داینامیک | همه ویوها |
| Middleware | تزریق داده در هر درخواست | زمان یا تنظیمات ساده |
| Blade Components | ارسال داده داخلی | بخشهایی مثل هدر و فوتر |
اگه خواستی من برات یه فایل ServiceProvider آماده کنم با تنظیمات دلخواهت (مثلاً نام سایت، تنظیمات فوتر، دستهبندیها)، فقط بگو چی توش باشه.