Laravel 8 定义路由组的教程

478 阅读4分钟

Laravel 8 Route Groups Example

当你想把一个属性应用于所有的路由时,路由组是有帮助的。

Laravel 8 路由组

Laravel 8路由组 允许你将所有与你的模块相关的路由分组。路由组采取一个数组,可以采取属性和回调函数。路由组允许你共享属性,如中间件,前缀,或命名空间,而无需在每个路由上定义这些属性。

这些共享的属性可以以数组的形式作为第一个参数传给**Route::group()**函数。

例如,如果你想对不同的路由应用一个命名空间,你可以创建一个路由组,然后对该组使用命名空间。

语法

Route::group( [ ] , callback);

参数

group()函数接收一个传递给group方法的数组作为第一个参数。第二个参数是回调 函数

在Laravel 8中定义路由组

在定义路由组之前, 让我们为我们的项目创建一个命名空间.

第1步: 定义命名空间.

Laravel命名空间被定义为一个元素类,其中每个元素都有一个唯一的名字,与相关的类。

要在Laravel中创建一个自定义的命名空间, 使用下面的命令创建一个单独的控制器,用正斜线(/)。

php artisan make:controller Admin/UserController --resource --model=User

UserController将被创建在Admin目录下的app >> Http >> Controllers文件夹内。

UserController的 index()方法中添加以下代码

// UserController.php

public function index()
{
        return 'Yes!! Admin namespace is working successfully';
}

第2步:定义group()函数。

要编写Admin命名空间路由,打开路由>>web.php 文件并添加以下代码。

// web.php

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

在这里,我们为路由用户分配了一个命名空间Admin。你可以在这里看到,我们使用group()方法将路由分组。 我们也可以把这段代码写得更好,像下面这样。

// web.php

Route::group(['namespace' => 'Admin'], function() {
    Route::resource('users', 'UserController');
});

这里,我们使用了group()函数,它需要两个参数,正如语法中提到的。

  1. 数组
  2. 回调函数

第一个参数是一个关联数组,包含路由组的命名空间、前缀中间件 。保存文件并进入http://localhost:8000/users。 你会看到`是的!管理命名空间正在成功工作`。

在这里, 你可以添加尽可能多的路由, 归类到管理命名空间下.

// web.php

Route::group(['namespace' => 'Admin'], function() {
    Route::resource('users', 'UserController');
    Route::resource('sales', 'SalesController');
    Route::resource('marketings', 'MarketingController');
});

Laravel 8 路径前缀

当我们想提供一个标准的URL结构时,路径前缀是很有用的。例如, 在我们的应用程序中, 我们正在为管理模块创建功能, 这意味着我们可以为管理功能下的所有路由创建一个标准前缀admin

为了增加路径前缀,在路由组的关联数组参数中增加一个项目,称为prefix 作为键,admin 作为值。

// web.php

Route::group(['namespace' => 'Admin', 'prefix' => 'admin'], function() {
    Route::resource('users', 'UserController');
});

现在, 你的URL应该是http://localhost:8000/admin/users**而不是**http://localhost:8000/users.

Laravel 8中间件

中间件提供了一个方便的机制来过滤进入你的应用程序的HTTP请求。我们也可以将中间件分配给一个组内的所有路由。我们可以在关联数组中增加一个属性,其键是middleware ,值是**'middleware name** '。

在这个例子中, 我们将使用 auth 中间件, 所以在你的终端键入以下命令,以scaffold Laravel提供的 auth 模块。

php artisan ui:auth

现在我们要保护管理路线,所以我们将使用auth中间件管理 路线。要做到这一点, 在web.php 文件中写下以下代码.

// web.php

Route::group(['namespace' => 'Admin', 
            'prefix' => 'admin',
            'middleware' => 'auth'], function() {
    Route::resource('users', 'UserController');
});

现在, 我们的管理路线是受保护的, 如果你已经登录到应用程序, 你将能够看到内容。否则,你将会被重定向到登录页面。

进入这个URL**:http://localhost:8000/admin/users,**你将被重定向到**http://localhost:8000/** 登录页面。因此,这就是你如何可以多个路由,并将它们分配到一个共享命名空间前缀中间件的路由的公共组。