View Composer در لاراول

View Composer در لاراول


زمانی که شما با لاراول هم فرانت اند و هم بک اند رو می زنید خیلی موقع ها نیاز هست که یک متغیر به چند view پاس داده بشه که همین امر باعث میشه که شما چندین بار اون متغیر رو در controller های مختلف تعریف کنید و به view های مختلف ارسال کنید

به عنوان مثال در کد زیر ما یک متغیری به نام menus$ داریم و میخوام در چند View از آن استفاده کنیم

  public function index()
    {
        $menus = Menu::get();
        return view('home',compact('menus'));
    }  

و چون در تمامی صفحه ها باید از این متغیر استفاده کنیم باید آن را در تمام controller ها استفاده کنیم

View Composer چیست

شما کافیه یک provider بسازی و در اون مشخص کنی که هر باری که این View ها (view های مد نظر من) صدا زده شد این متغیر رو به view ارسال کن

ابتدا باید با دستور زیر یک provider بسازید
البته شما میتونید یک provider نسازید و دستور خودتون رو داخل AppServiceProvider بزنید که بهتره یک provider بسازید تا کد شما خواناتر و مرتب تر باشد

  php artisan make:provider ViewServiceProvider  

در دستور بالا ما تونستیم یک provider در مسیر \App\Providers بسازیم

حالا در ادامه کافیه تا view ها , متغیر های مورد نظر خودمون رو مشخص کنیم تا کار رو تموم کنیم

  namespace App\Providers;

use App\Models\Category;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ViewServiceProvider extends ServiceProvider
{
    // ...

    public function boot()
    {
        View::composer('home', function($view) {
            $menus = Menu::all();

            $view->with([
                'menus' => $menus,
            ]);
        });
    }
}  

همانطو رکه در مد بالا مشخص است به متغیر menus$ رو به view home پاس دادیم

اگر بخواهیم چندین view رو مشخص کنیم تا متغیر موردنظر ما به همه آن ها ارسال بشه کافیه تا view ها را داخل یک آرایه بزاریم

  View::composer(['home', 'footer','header'], ... );  

و اگر هم بخواهیم که در متغیر خودمون رو در تمامی view ها ارسال کنیم باید از دستور زیر استفاده کنیم

  View::composer('*', ... );  

به همین راحتی تونستیم از view composer ها استفاده کنیم:)

برای ثبت نظر خود نیاز هست که ثبت نام کنید

  • بهینه سازی سئو در لاراول

    چند نکته ای که برای رعایت اصول سئو در لاراول باید انجام بدیم

    بهینه سازی سئو در لاراول
    هوش مصنوعی رایگان

    شما میتونید با این هوش مصنوعی فارسی صحبت کنید و اون هم جوابتونو میده و میتونید بهش بگید براتون عکس بسازه

    هوش مصنوعی رایگان
    برگشت به بالا