آموزش لاراول: بررسی کامل کنترلر Controller لاراول
آموزش لاراول (Laravel) زمان مطالعه: 6 دقیقه تاریخ انتشار: 1 سال قبل

آموزش لاراول: بررسی کامل کنترلر Controller لاراول

در قسمت قبل، امنیت و اهمیت CSRF در لاراول را بررسی کردیم و در این قسمت از آموزش لاراول به بررسی controller لاراول می پردازیم. در هنگام استفاده و پیاده سازی پروژه های خود با لاراول شما باید کار با کنترلر لاراول را به خوبی بلد باشید و آشنایی کاملی با آن داشته باشید در ادامه همراه هیرود باشید تا بهتون بگیم Controller لاراول چیست؟

 

Controller لاراول چیست؟

در لاراول به جای تعریف منطق برنامه در Closures درخواست ها (Request) در فایل Route می توانیم از کنترلرها استفاده کنیم. Controller لاراول یک کلاس است که کلاس کنترلر اصلی لاراول را Extends یا توسعه می دهد. کنترلر های لاراول میتوانند منطق برنامه با درخواست های مشابه را در یک کلاس واحد گروه بندی کنند. همچنین کنترلر لارولپس از ایجاد در مسیر app/Http/Controllers ذخیره می شوند.

 

ایجاد و تعریف Controller لاراول

برای تعریف اولین کنترلر خود در Laravel می توانید از دستور زیر در کنسول استفاده کنید که در مثال زیر ShowProfile نام کنترلر ما است:

php artisan make:controller ShowProfile

ساختار یک کنترلر مانند کد زیر است که شما کنترلر UserController با یک متد show را مشاهده می کنید که اطلاعات کاربر را به یک view ارسال می کند:

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\User;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function show($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

 

اتصال Route به Controller در لاراول

برای اتصال یک درخواست در فایل Route به یک کنترلر در Laravel می توانید به عنوان پارامتر دوم با نوشتن نام و متد این کار را انجام دهید:

Route::get('user/{id}', '[email protected]');

حالا زمانی که یک کاربر آدرس user/{id} را در مروگر خود اجرا می کند درخواست آن به همراه پارامتر های ورودی در متد show کنترلر UserController اجرا می شود.

 

تعریف کنترلر Single Action در لاراول

Controller های Single Action فقط یک عمل واحد را انجام می دهند و منطق باید در متد __invoke تعریف شود. این کنترلر های زمانی استفاده می شود که نیاز به متدهای دیگر در کنترلر نباشد:

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\User;

class ShowProfile extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function __invoke($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

برای اتصال Route به این کنترلر به صورت زیر باید عمل کنید:

Route::get('user/{id}', 'ShowProfile');

برای تعریف کنترلر با عمل واحد در لاراول میتوانید از دستور زیر در خط فرمان استفاده کنید:

php artisan make:controller ShowProfile --invokable

 

استفاده از Middleware در Controller لاراول

قبلا در مقاله مجزا Middleware لاراول را بررسی کردیم که میتوانید با مطاله آن اطلاعات کاملی بدست آوردید. اولین روش تعریف میدلور برای کنترلر لاراول، تعریف بر روی Route مورد نظر است:

Route::get('profile', '[email protected]')->middleware('auth');

در مثال بالا میدلور auth برای متد show در کنترلر UserController تعریف شده است و کاربر فقط در صورت لاگین بودن به آن دسترسی دارد.

 

روش دیگر که شاید تعریف Middleware در کلاس سازنده Controller است:

class UserController extends Controller
{
    /**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');

        $this->middleware('log')->only('index');

        $this->middleware('subscribed')->except('store');
    }
}

 

تعریف Resource Controllers در لاراول

شما می توانید با استفاده از تعریف یک کنترلر resource در لاراول خیلی سریع و آسان متدهای لازم برای انجام عملیات CRUD را در اختیار داشته باشید.

با استفاده از دستور زیر در خط فرمان می توانید Resource Controller در لاراول را ایجاد کنید:

php artisan make:controller PhotoController --resource

Route آن هم به صورت زیر تعریف می شود:

Route::resource('photos', 'PhotoController');

اگر قصد ایجاد Resource Controller برای Model خاص در لاراول را دارید می توانید این کار با دستور --model انجام دهید:

php artisan make:controller PhotoController --resource --model=Photo

 

Resource Controller های خاص لاراول

وقتی شما یک resource controller ایجاد می کنید متدهای زیر به همراه Route های آن تعریف می شود. شاید شما نخواهید از تمام این متدها در کنترلر مورد نظر استفاده کنید میتوانید با استفاده از دو روش only , except فقط جزئی از آن را به کار بگیرید و محدودسازی انجام دهید.

Route::resource('photos', 'PhotoController')->only([
    'index', 'show'
]);

Route::resource('photos', 'PhotoController')->except([
    'create', 'store', 'update', 'destroy'
]);

 

تعریف API Resource Routes در لاراول

گفتیم زمانی یک resource controller در لاراول ایجاد می کنید شاید به برخی از متدها و Route ها نیاز نداشته باشید. معمولا در ساخت Api به دو متد create , edit که برای فراخوانی HTML است نیاز نمی شود. به راحتی می توانید با دستور زیر resource controller مخصوص Api در لارول ایجاد کنید:

php artisan make:controller API/PhotoController --api

تعریف Route آن هم به صورت زیر خواهد بود

Route::apiResource('photos', 'PhotoController');

 

ممنون که تا پایان این مقاله همراه ما بودید برای یادگیری لاراول سایر آموزش ها و مقالات هیرود را از دست ندهید.

امتیاز به این مقاله فراموش نشه
میانگین امتیاز 5 از 5 ، کل امتیازات: 1
امیر اشرفی
نویسنده: امیر اشرفی

امیر اشرفی هستم مدیر و بنیان گذار آکادمی هیرود، حدود 10 سالی میشه که در حوزه برنامه نویسی و توسعه وب و موبایل فعالیت میکنم و تونستم تجربه خوبی در این حوزه بدست بیارم. یکی از علاقه هام انتقال تجربه هایی که در اختیار دارم به دیگرانه و باعث میشه حالم خوب بشه و اشتیاق یادگیریم افزایش پیداکنه، در واقع هیرود نتیجه حال خوبیامه :)

دوره های قهرمانی پیشنهادی

اولین قدم برنامه نویسی

اولین قدم برنامه نویسی

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

سبد خرید

سبد خرید شما خالی است.

پیش به سوی قهرمانی