استفاده از متغییر سراسری در همه کنترلرها در Laravel

استفاده از متغییر سراسری در همه کنترلرها در Laravel

در این مطلب قصد دارم به شما آموزش بدم، تا بتوانید به راحتی و با نوشتن چند خط کد یک متغییر کلی برای استفاده در همه کنترلرها داشته باشید. برای نمونه تصور کنید شما یک table بنام setting دارید که تنظیمات سایت از جمله عنوان، توضیحات، کلمات کلیدی و... در این جدول ذخیره شده و  قصد دارید آن را در بخش های مختلف مثلا در بخش صفحه نخست، نمایش مطالب،  دسته بندی، وبلاگ و.. استفاده نمایید.

همانطور که می دانید در لاراول و بصورت کلی در معماری MVC، کنترلر کار ارتباط بین مدل و ویو را انجام می دهد.

قبلا در این مطلب ما آموزش استفاده از یک متغییر سراسری در همه ویوها را توضیح دادیم، اما در این مطلب قصد دارم به شما آموزش بدم، تا بتوانید به راحتی و با نوشتن چند خط کد یک متغییر کلی برای استفاده در همه کنترلرها داشته باشید.

برای نمونه تصور کنید شما یک table بنام setting دارید که تنظیمات سایت از جمله عنوان، توضیحات، کلمات کلیدی و... در این جدول ذخیره شده و  قصد دارید آن را در بخش های مختلف مثلا در بخش صفحه نخست، نمایش مطالب،  دسته بندی، وبلاگ و.. استفاده نمایید.

شما می توانید این کار را در بلید ها تکرار کنید اما گاهی وقت ها مثلا وقتی از پلاگینی مانند پلاگین artesaos/seotools استفاده می کنید، باید متغییر های عنوان و توضیحات و... را در کنترلر تعریف نمایید.

تعریف متغییر سراسری برای استفاده در همه کنترلر ها در لاراول

برای اینکار به دایرکتوری App\Providers بروید، فایل AppServiceProvider را باز کنید

فرض کنید ما میخواهیم از جدول setting اولین فیلد را در همه کنترلر ها داشته باشیم

سپس در تابع boot مربوط به فایل AppServiceProvider کد زیر را وارد نمایید:

  App::singleton('site_settings', function(){
        return Setting::all();
    });

در کد بالا ما با استفاده از فساد App و تابع singletone متغییری بنام site_settings تعریف کرده ایم. این فانکشن از مدل Setting اولین فیلد رو برای ما بر میگردونه.

حالا شما در هر کجای سیستم به راحتی می تونید بصورت زیر site_setting رو فراخونی کنید.

براین نمونه در یک کنترل:

class ProductControlle extends Controller
{
	
	public function show( Request $request , Category $category )
	{
		$site_setting= app( 'site_setting' );
	}
}

 به این صورت شما به راحتی می توانید یک بار متغییری را ایجاد و در تمام کنترلر ها استفاده نمایید.

 

امیدوارم این مطلب برای شما مفید واقع شده باشه

در صورتی که سوال یا پیشنهادی دارید از بخش نظرات ارسال فرمایید.

 


دسته بندی ها:

لاراول

ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
هنوز برای این مطلب نظری ارسال نشده است!