ساخت فایل route در لاراول

حمید تیموری 1108 بازدید 1397/12/13
ساخت فایل route در لاراول

در پروژه های بزرگ که تعداد route ها زیاد میشود، ممکن است فایل route کمی به هم ریخته شود.

به طور مثال شما route هایی در پروژه دارید که به شکل زیر است:

Route::get('/panel/article', 'ArticleController@index');
Route::get('/panel/article/create', 'ArticleController@create');
Route::get('/panel/article/{id}/edit', 'ArticleController@edit');

Route::get('/panel/product', 'ProductController@index');
Route::get('/panel/product/create', 'ProductController@create');
Route::get('/panel/product/{id}/edit', 'ProductController@edit');


Route::patch('/user/profile/password', 'ProfileController@updatePassword');
Route::post('/user/profile', 'ProfileController@update');
Route::get('/user/factor', 'FactorController@index');

دقت کنید که وقتی تعداد این route ها زیاد میشود، مدیریت و تغییر آنها سخت میشود.

روش هایی وحود دارد که این مشکلات را مدیریت کرد
ساده ترین آنها استفاده از group و prefix برای route هاست:

Route::group(['prefix' => 'panel'], function () {
    Route::get('/article', 'ArticleController@index');
    Route::get('/article/create', 'ArticleController@create');
    Route::get('/article/{id}/edit', 'ArticleController@edit');

    Route::get('/product', 'ProductController@index');
    Route::get('/product/create', 'ProductController@create');
    Route::get('/product/{id}/edit', 'ProductController@edit');
});


Route::group(['prefix' => 'user'], function () {
    Route::patch('/profile/password', 'ProfileController@updatePassword');
    Route::patch('/profile', 'ProfileController@update');
    Route::get('/factor', 'FactorController@index');
});


ولی ممکن است که بخواهید کلا route های مدیریتی را از route های کاربر جدا کنید
برای این کار میتوانید در مسیر زیر یک فایل php با نام دلخواه تعریف کنید:

your-project/routes/panel.php

که برای مثال من فایلی با نام panel تعریف کردم. حالا باید این فایل را در RouteServiceProvider تعریف کنیم:

app/Providers/RouteServiceProvider.php

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

// modilfy this function
public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $this->mapPanelRoutes();
    
}

// add this function
protected function mapPanelRoutes()
{
    // you can use 'web' or your custom middleware
    Route::prefix('panel')
           ->middleware('web')
           ->namespace($this->namespace)
           ->group(base_path('routes/panel.php'));
}

فایل شما با موفقیت به لاراول معرفی شده است، و از این پس هر route ای که شما تعریف کنید با panel شروع خواهد شد.
دقت کنید که میتوانید این تنظیمات را تغییر دهید.

امیدوارم این مطلب برای شما مفید باشد.
اگر سوالی داشتید از قسمت نظرات میتوانید بپرسید.

دیگر مقالات
امید کیانی 1133 بازدید 1398/02/14
حمید تیموری 1183 بازدید 1397/05/07
حمید تیموری 1210 بازدید 1397/04/18
حمید تیموری 2478 بازدید 1397/06/06
حمید تیموری 1605 بازدید 1397/05/07


نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید