TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #17 1.06K

Forwarded from | کانال توسعه‌دهندگان لاراول |

💢 آموزش‌ View Composer

یکی از نکاتی که باعث بهینه شدن پروژه می‌شود این است که درخواست‌های‌مان را به سمت سرور برای گرفتن اطلاعات از دیتابیس کم‌تر کنیم؛ موقعیتی را در نظر بگیرید که نیاز است یک سری اطلاعات از جدول مشخصی را به چندین ویو پاس بدهیم در این شرایط راحت‌ترین کاری که می‌شود کرد این است که در روت مربوط به همه ویو‌ها یک فانکشن ایجاد کنیم و برای هر کدام عمل کوئری انتخاب از دیتابیس را انجام دهیم و در نهایت داده دریافتی را به ویو‌های مربوطه Compact کنیم.

در این شرایط علاوه بر ارسال درخواست تکراری به سمت دیتابیس ما با کدهای تکراری روبه‌رو هستیم که از بهینه و تمیز بودن کدها کم می‌کند؛ مورد دومی که شاید به ذهن‌تان برسد این است که یک متغیر پابلیک ایجاد کنیم و یک بار درخواست ارسال کنیم و چندین جا از آن استفاده کنیم ولی عیبی که این روش دارد این است که این متغیر داخل همه ویوها/کلاس‌هایی که نیاز به آن متغیر ندارند هم قابل دسترس است و نمی‌توان به راحتی مشخص کرد که به کدام ویو‌ها این متغیر ارسال شود.

برای حل چنین عیب‌هایی می‌توان از View Composer ها استفاده کنیم با استفاده از این ویژگی لاراول می‌توانیم یک کلاس یا یک تابع Callback به پروژه‌ شناسایی کنیم و مشخص کنیم هر موقع یک View خاصی در حال رندر شدن بود آن کلاس یا تابع که به آن View Composer گفته می‌شود اجرا شود ( می‌توانید نتیجه اجرای ویو کامپوزر و ویوتان هم برای بهینه شدن بیشتر پروژه‌تان کش کنید تا LCP سایت‌تان کم‌تر هم شود )

🔺نوشتن View Composer

ویوکامپوزرها معمولا در Service Provider ها تعریف می‌شوند که بهتر است یک سرویس پرووایدر اختصاصی ایجاد کنیم و درنهایت آن را به لیست مربوطه اضافه کنیم، برای ایجاد یک سرویس پرووایدر اختصاصی از کد زیر استفاده کنید:
php artisan make:provider ViewServiceProvider

با زدن این دستور یک فایل با نام ViewServiceProvider در مسیر زیر ایجاد می‌شود:
app/providers

بعد از ساخت فایل مربوطه باید سرویس پرووایدر مان را به لاراول شناسایی کنیم برای این کار تنها کافی است که به فایل config/app.php برید و سرویس پرووایدر تان را به آرایه Providers اضافه کنید با این کار سرویس پرووایدر مربوطه به پروژه شناسایی می‌شود و وقت آن است که ویو کامپوزر دلخواه‌مان را ایجاد کنیم.

🔺ایجاد View Composer

برای ایجاد یک ویو کامپوزر تنها کافی است به ViewServiceProvider که در مرحله قبلی ایجاد کردیم برویم و در متد boot این فایل از متد composer که در کلاس view قرار دارد استفاده کنیم:

View::composer('header',
funcation($view) {

$Categories = Category::all();

$view->with([
'category' => $Categories
]);

});


🔺بررسی کد بالا

داخل پارامتر اول متد composer اسم ویو‌هایی که می‌خواهیم این دیتا را داشته باشند می‌نویسم لازم به ذکر است که می‌توان در این قسمت یک آرایه بنویسم و یا مشخص کنیم به کل ویو‌های یک پوشه این دیتا ارسال شود برای مثال:

View::composer(['panel.*', 'users.header'], ... )

در پارامتر دوم هم مقادیری که باید به ویو‌های مربوطه ارسال شود را با with مشخص می‌کنیم، و درنهایت در ویو‌‌های مربوطه از آن‌ها استفاده می‌کنیم، صرفا با یک بار ارسال درخواست به سمت دیتابیس و عدم تکرار کد.

🔗 اطلاعات بیشتر و داکیومنت مربوطه

👤 Maryam

💎 Channel: @DevelopixLaravel
  • 👍 7
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →