路由前缀示例
假设我们有一个应用程序,其中包含管理员、客户等模块。
如果我们将所有这些给定的两个模块的所有路由都写入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.php
和customer.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.php
和 customer.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 中创建自定义路由文件。
评论区