akofaraji.ir
کنترلر‌ها در لاراول
نوشته شده در تاریخ 08 فروردین 1403
نظرات: 0 امتیاز: 9 زمان مطالعه: 22 دقیقه

 

مقدمه

کنترلر‌ها به عنوان یکی از اساسی‌ترین و مهم‌ترین بخش‌های یک وب سایت و یا اپلیکیشن به‌حساب می‌آیند. همانطور که در جریان هستید در الگو و معماری MVC، حرف سوم (C) معادل عبارت Controller است. کنترلرها به عنوان یک واسط بین کاربر، View و Model عمل می‌کنند و به عبارتی قلب تپنده‌ی یک اپلیکیشن می‌باشند. چنانچه با معماری MVC آشنایی ندارید، به شما توصیه می‌کنیم حتما مقاله‌ی زیر را مطالعه بفرمایید:

 

کنترلرها به صورت مستقیم با مسیرها (routes) در ارتباط هستند. معمولا از آنها برای ایجاد یک ساختار مشخص مانند CRUD استفاده می‌شود. در CRUD، یک کنترلر می‌تواند عملیات ساخت (Create)، خواندن (Read)، بروزرسانی (Update) و حذف کردن (Delete) را انجام دهد. مقاله‌ی زیر به صورت دقیق و با جزئیات به توضیح CRUD پرداخته است. به عزیزان توصیه می‌کنیم که این مقاله را مطالعه کرده و سپس به ادامه‌ی مبحث کنترلر بپردازند:

 

آرتیسَن Artisan

 

لازمه ورود به مبحث کنترلر‌ها آشنایی با ماهیت Artisan در لاراول است. آرتیسن یا Artisan به عنوان یک رابط خط فرمان یا Interface Command-line امکاناتی را در اختیار برنامه‌نویس و توسعه‌دهنده قرار می‌دهد تا با اجرای فرمان‌های خاص، عملیاتی متناسب با آن را انجام دهد. برای اجرای Artisan باید در صفحه پروژه‌ی خود CMD یا خط فرمان ویندوز و یا SSH را باز کرده و دستور php artisan را وارد کنید. با دستور زیر می‌تواند به صفحه راهنمایی Artisan دسترسی داشته باشید:

 

 

ساخت کنترلر لاراول

 

برای ساخت یک کنترلر لاراول ابتدا باید دستور زیر را دی CMD اجرا کنید:

 

توسط فضای‌نام make ساختار و اسلکت‌بندی یک کنترلر ایجاد شده و توسط این دستور فایلی تحت عنوان UsersController.php در مسیر app/Http/Controller ایجاد خواهد شد که محتویات درون این فایل به صورت زیر می‌باشد:

 

به هر تابعی که درون کنترلرها نوشته می‌شود یک متد (Method) گفته می‌شود. بنابراین برای کنترلر Users یک متد به نام ()home می‌نویسیم:

 

حال درون فایل routes/web.php مسیر زیر را اضافه می‌کنیم:

 

بنابراین در صورتیکه کاربر آدرس /http://www.roxo.ir را وارد کند، کنترلر Users فعال شده و متد ()home‌ فراخوانی می‌شود و سپس در پاسخ به این درخواست کاربر عبارت Hello Roxo! چاپ می‌شود.

 

دریافت ورودی از کاربر

 

یکی از مهم‌ترین اکشن‌ها یا فعالیت‌هایی که کنترلرها و متدهای آن انجام می‌دهند دریافت اطلاعات ورودی کاربران و انجام عملیات روی آنهاست. این فرآیندها با متدهای get یا post صورت می‌پذیرد. به عنوان مثال دستورهای زیر را در نظر بگیرید:

 

با متد get صفحه‌ی http://www.roxo.ir/tasks/create کنترلر Tasks فعال و متد create اجرا خواهد شد (که این متد یک صفحه را به کاربر نمایش می‌دهد). سپس با وارد کردن اطلاعات در صفحه http://www.roxo.ir/tasks/create و فشردن دکمه‌ی ثبت، این اطلاعات با متد post به کنترلر Tasks ارسال شده و متد store جهت ذخیره سازی این اطلاعات فعال می‌شود.

 

برای دقت عمل بیشتر دستورهای زیر را ملاحظه بفرمایید که در متد store ذخیره شده‌اند:

 

در این مثال مشاهده می‌کنید که ابتدا یک شیء جدید از مدل Task ساخته شده است (مبحث مدل‌‎ها در فصل‌های آینده شرح داده خواهد شد) سپس مقادیر فیلدهای title و description در دیتابیس برابر مقادیر دریافتی از فرم می‌باشد. در اینجا از Input:: Facade استفاده شده است. این Facade اطلاعات مقادیر موجود در فیلدهای ارسالی را در متغییر task->title$ ذخیره می‌کند.

 

Input::get(fieldName)

 

این دستور اطلاعات ورودی هر فیلد را دریافت می‌کند (در حالت POST) و به یک متغییر انتساب می‌دهد.

 

تزریق وابستگی‌ها در کنترلرها

 

Facade لاراول یک رابط (Interface) بسیار ساده را برای تزریق وابستگی‌ها به کنترلرها ایجاد کرده است که استفاده از آن بسیار مفید می‌باشد. درباره‌ی تزریق وابستگی‌های لاراول و به اصطلاح Service Container ها در فصول بعدی به طور کامل صحبت خواهیم کرد. تزریق وابستگی‌های لاراول را می‌توانید به عنوان یک جادو تصور کنید! روش دیگری برای ذخیره کردن اطلاعات کاربران در کنترلر وجود دارد. این روش استفاده از کلاس Request در مسیر Illuminate\Http\Request می‌باشد. به مثال زیر توجه کنید:

 

همانطور که ملاحظه می‌کنید با استفاده از روش تزریق وابستگی، از کلاس Request یک نمونه‌ی request$ درنظر گرفتیم و آن را به عنوان ورودی به آرگومان متد store ارسال کردیم. حال به جای استفاده از Input:: Facade، از شیء request$ استفاده می‌کنیم.

 

منابع کنترلرها (Resource Controllers)

 

همواره ساختن نرم‌افزارهایی مبتنی بر اصول CRUD با کدنویسی زیادی همراه است و گاها توسعه‌دهنده دچار سردرگمی می‌شود. برای رفع این سردرگمی‌ها فریم‌ورک لاراول امکاناتی را در اختیار شما قرار داده است تا با نوشتن تنها و تنها یک مسیر (route) و یک دستور artisan کنترلر موردنظر به همراه متدهای CRUD ساخته شود. با لاراول جادو کنید! دستور آرتیسن این نوع کنترلرها به صورت زیر می‌باشد:

 

پس از اجرای دستور فوق فایل UsersResourceController.php در مسیر app\Http\Controller ایجاد شده که محتویات آن شامل متدهای مختلف است.

سپس باید به مسیرها در فایل routes\web.php دستور زیر را اضافه کنید:

 

حال برای روشن تر شدن موضوع دستور زیر را در CMD تایپ کنید:

 

این دستور اطلاعاتی مشابه ذیل به شما ارائه می‌دهد و شامل تمام مسیرهایی‌ست که برای ساخت CRUD مورد استفاده قرار می‌گیرد:

 

همانطور که ملاحظه می‌کنید به جای نوشتن چندین مسیر تنها با یک دستور توانستید تمام مسیرهای موردنیاز را برای یک کنترلر ایجاد کنید. همچنین محتویات فایل UsersController.php به صورت ذیل خواهد بود:

 

بسیار عالی. به شما تبریک می‌گوییم مباحث کنترلرها به اتمام رسید و شما به راحتی می‌توانید تمام کنترلرهای اپلیکیشن تحت وب خود را تنها با استفاده از چند دستور ایجاد کنید. در جلسات آینده به توضیح روش‌های دریافت و ارسال اطلاعات اشاره خواهیم کرد. با ما همراه باشید.

 

منبع: سایت روکسو


اگر احساس می کنید این مطلب برای شما مفید بود ، از 1 تا 10 به این مطلب امتیاز دهید

دیدگاه کاربران در مورد این مطلب

ثبت نظر
به نظر خوب میاد!
لطفا نام را وارد کنید
@
لطفا یک ایمیل منحصر به فرد و معتبر انتخاب کنید.
لطفا متن با کلمات و معانی مفهوم دار وارد نمایید