TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #30 3.39K
💢 آموزش‌ 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
  • 👍 13
  • ❤ 1
  • 👎 1
More from @developixlaravel
  1. Oct 9, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت دوم در بخش دوم از آمو…
  2. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  3. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  4. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  5. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  6. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
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 →