如何在 Laravel 8 中创建自定义路由文件

如何在 Laravel 8 中创建自定义路由文件

Scroll Down

路由前缀示例

假设我们有一个应用程序,其中包含管理员、客户等模块。

如果我们将所有这些给定的两个模块的所有路由都写入web.php,那么它看起来会像这样 –

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\CustomerController;

Route::get('/', function () {
    return view('welcome');
});

// Admin路由
Route::prefix("admin")->group(function(){
   Route::get("create-user", [AdminController::class, "createUser"]);
   Route::get("list-users", [AdminController::class, "listUsers"]);
   Route::get("edit-user", [AdminController::class, "editUser"]);
});

// 客户路由
Route::prefix("customer")->group(function(){
   Route::get("list-purchase", [CustomerController::class, "listPurchase"]); 
   Route::get("list-blogs", [CustomerController::class, "listBlogs"]);
   Route::get("create-blog", [CustomerController::class, "createBlog"]);
});

//.. 其他模块路由


目前,我们只考虑了任何应用程序中的两个模块,但如果有 20 个模块及其路由,web.php文件也会过长且混乱。我们将无法管理整个应用程序。

这里来了Laravel中自定义路由文件的概念。

自定义路由文件

根据需要的模块将文件admin.phpcustomer.php创建到/routes/system/文件夹中。

打开/routes/system/admin.php,在这个文件中,我们将放置所有与管理相关的路由。

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AdminController;

// Admin路由
Route::prefix("admin")->group(function(){
   Route::get("create-user", [AdminController::class, "createUser"]);
   Route::get("list-users", [AdminController::class, "listUsers"]);
   Route::get("edit-user", [AdminController::class, "editUser"]);
});


打开/routes/system/customer.php,在这个文件中,我们将放置所有与客户相关的路由。

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CustomerController;

// 客户路由
Route::prefix("customer")->group(function(){
   Route::get("list-purchase", [CustomerController::class, "listPurchase"]); 
   Route::get("list-blogs", [CustomerController::class, "listBlogs"]);
   Route::get("create-blog", [CustomerController::class, "createBlog"]);
});

完美,我们可以看到我们已经将每个模块的路由分成了不同的不同路由文件。更重要的是,现在应用程序路由是模式可读的。

注册自定义路由文件
/app/Providers 文件夹打开RouteServiceProvider.php文件。

在这个类中,搜索boot() 方法。

public function boot()
{
  $this->configureRateLimiting();

  $this->routes(function () {
    Route::prefix('api')
      ->middleware('api')
      ->namespace($this->namespace)
      ->group(base_path('routes/api.php'));

    Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('routes/web.php'));

    // Admin Route file 
    Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('routes/system/admin.php'));

    // Customer Route file
    Route::middleware('web')
      ->namespace($this->namespace)
      ->group(base_path('routes/system/customer.php'));
  });
}

在这里,我们可以看到我们使用默认的中间件web来路由文件 admin.phpcustomer.php。如果我们有不同的中间件,那么我们可以传递和使用它。

应用测试

打开项目到终端并输入命令启动开发服务器

	php artisan serve

管理员 URL – http://127.0.0.1:8000/admin/create-user 等。

客户 URL – http://127.0.0.1:8000/customer/list-purchase 等。

我们希望本文能帮助您以非常详细的方式了解如何在 Laravel 8 中创建自定义路由文件。