چگونه مسیرهای لاراول را ارتقا دهیم؟

 یکی از ویژگی‌های جذاب فریم ورک لاراول، راحتی استفاده از مسیریابی یا routing در برنامه است. این ویژگی، کار کردن با آدرس و پارامتر مسیرها، همچنین نام‌گذاری و دسته بندی آن‌ها را راحت‌تر می‌کند. در این مقاله از لیداوب، چند مورد از امکانات مسیریابی در لاراول ۵ را بررسی می‌کنیم.    


routing یا مسیریابی در لاراول دارای یک رابط برنامه نویسی بسیار ساده است که حتی یک برنامه نویس تازه وارد هم می‌تواند به راحتی از آن استفاده کند. در ادامه قصد داریم نکاتی را در مورد مسیرهای لاراول به شما آموزش دهیم که می‌توانند در استفاده از فریم ورک لاراول نسخه ۵ به شما کمک کنند.  

بیشتر بخوانید:

لاراول چیست و چرا به محبوب‌ترین فریم ورک PHP تبدیل شده است؟

  فضای نامی سفارشی برای مسیرهای لاراول

اگر بخواهید تعدادی از مسیرها (route) از یک فضای نامی مانند App\Http\Controllers\Admin استفاده کنند، می‌توانید به شکل زیر، یک فضای نامی برای آن‌ها تعریف کنید:

Route::namespace('Admin')->group(function () {
    // Controllers Within The "App\Http\Controllers\Admin" Namespace
});

این تکنیک، همان روشی است که در RouteServiceProvider موجود در هر پروژه، استفاده می‌شود:

protected function mapWebRoutes()
{
    Route::middleware('web')
         ->namespace($this->namespace)
         ->group(base_path('routes/web.php'));
}

برای ایجاد کنترلر  App\Http\Controllers\Admin ، می‌توانید دستور زیر را در ترمینال وارد کنید:

php artisan make:controller -r Admin/UsersController

فضای نامی تعریف شده در فایل routes/web.php به صورت زیر خواهد بود:

Route::namespace('Admin')
    ->prefix('admin')
    ->group(function () {
        Route::resource('users', 'UsersController');
    });

مقاله مرتبط:

Routing یا مسیریابی در لاراول 5.5 چگونه است؟

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

مسیریابی یا routing قابل ماکرو نویسی است، به این معنی اگر شما تعدادی مسیر (route) دارید و قصد دارید آن ها را در قالب یک بسته استفاده کنید یا چند بار از آن‌ها استفاده کنید، لازم است که یک ماکرو در service provider تعریف کنید.

برای مثال، فرض کنید که تعدادی مسیر خرید برای یک فروشگاه تجارت الکترونیک دارید که در قالب یک بسته درآوردید و به کاربران اجازه می‌دهید که بخش‌هایی از مسیرها را بازنویسی یا سفارشی سازی کنند:

// Inside a service provider boot()

public function boot()
{
    Route::macro('shopRoutes', function ($prefix) {
        Route::group([
            'prefix' => $prefix,
            'middleware' => ['shopping'],
        ], function () {
            Route::get('products/{product}', 'ProductsControlle[email protected]');
            // ...
        });
    });
}

سپس، مشتری می‌تواند این ماکرو را در برنامه کاربردی جدید در فایل routes/web.php فراخوانی کند:

collect(config('languages'))->each(function ($language) {
    Route::shopRoutes($language);
});

یا ممکن است پیاده سازی شما شبیه مثال زیر باشد:

Route::macro('shopRoutes', function ($languages) {
    Route::group([
        'prefix' => '/{language}',
        'middleware' => ['shopping'],
        'where' => ['language' => implode('|', $languages)],
    ], function () {
        Route::get('products/{product}', '[email protected]');
        // ...
    });
});

اشکال زدایی مسیرهای لاراول

مسیرهایی که برنامه لاراول شما قادر به پاسخگویی به آن است، در فایلی به نام web.php ( و api.php ) به طور کامل مستند شده است. اما روش دیگری که می‌توانید از آن برای پیدا کردن یا اشکال زدایی مسیر استفاده کنید، اجرای دستور  artisan route:list است:

artisan route:list
+--------+----------+----------+------+---------+--------------+
| Domain | Method   | URI      | Name | Action  | Middleware   |
+--------+----------+----------+------+---------+--------------+
|        | GET|HEAD | /        |      | Closure | web          |
|        | GET|HEAD | api/user |      | Closure | api,auth:api |
+--------+----------+----------+------+---------+--------------+

برای دیدن نام مسیر و middleware ضمیمه شده هم می‌توانید از دستور route:list استفاده کنید.

نام گذاری مسیرهای گروه در لاراول

یک روش رایج برای فراخوانی مسیرها این است که به جای نوشتن آدرس مسیر، به نام آن‌ها ارجاع دهیم: 

{{ route('admin.users.show', ['user' => $user]) }}
{{-- /admin/users/2 --}}

وقتی گروهی از مسیرها را تعریف می‌کنید، می‌توانید برای آن‌ها یک پیشوند تعریف کنید. برای مثال، در کد زیر پیشوند "admin" برای گروه زیر تعریف شده است:

Route::namespace('Admin')
    ->prefix('admin')
    ->name('admin.')
    ->group(function () {
        Route::resource('users', 'UsersController');
    });

بدین ترتیب، اسامی مسیری که برای کنترلر تولید می‌شوند، به صورت زیر خواهد بود:

  • admin.users.index
  • admin.users.store
  • admin.users.create
  • admin.users.show
  • admin.users.update
  • admin.users.destroy
  • admin.users.edit

فرا بگیرید:

آموزش پایه لاراول ۵,۵

آموزش CSS

آموزش سئو

 نکات آموزشی جهت بهبود مسیریابی یا routing لاراول در همین جا به پایان می‌رسد، اما برای یادگیری مطالب بیشتر، از شما دعوت می‌کنیم،  دوره‌های آموزش تخصصی ما در زمینه‌های برنامه نویسی، طراحی سایت و سئو را در کتابخانه آنلاین لیداوب دنبال کنید. همچنین، به زودی ویدیوهای آموزشی برنامه نویسی PHP و فریم ورک لاراول نیز بر روی سایت قرار خواهند گرفت.