📅  最后修改于: 2023-12-03 15:17:14.262000             🧑  作者: Mango
在 Laravel 中,我们可以使用同一个路由但在不同的组中运行不同的操作。这在开发时非常有用,因为它可以让我们快速轻松地对不同的请求和权限进行操作。
要定义带有多个组的路由,我们可以按照以下方式来定义:
Route::prefix('admin')
->middleware(['auth', 'admin'])
->group(function () {
// 该组下的路由需要认证和管理员权限
Route::get('/dashboard', 'Admin\DashboardController@index');
Route::prefix('users')
->group(function () {
// 该组下的路由需要认证,但不需要管理员权限
Route::get('/', 'Admin\UserController@index');
// 该组下的路由仅需要认证和特定角色权限
Route::get('/{user}', 'Admin\UserController@show')
->middleware('can:view,user');
});
});
Route::middleware('auth')
->group(function () {
// 该组下的路由仅需要认证
Route::get('/profile', 'ProfileController@index');
});
在上面的示例中,我们有两个路由组,/admin
和 /
(不带前缀)。/admin
组要求身份验证和管理员权限,而 /profile
和 /admin/users
仅需要身份验证。
注意在定义路由时使用 Route::prefix
、Route::middleware
和 Route::group
方法,以便为每个路由定义组。
现在,我们已经定义了路由组,下一步就是在控制器中定义每个路由的操作。为了示例,我们将创建两个控制器,并将其放置在不同的命名空间中:
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class DashboardController extends Controller
{
public function index()
{
return view('admin.dashboard');
}
}
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
public function index()
{
return view('admin.users.index');
}
public function show(User $user)
{
return view('admin.users.show', compact('user'));
}
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class ProfileController extends Controller
{
public function index()
{
return view('profile');
}
}
在上面的示例中,我们为每个路由定义了不同的控制器和操作。注意在定义 UserController@show
时使用了 Route 模型绑定。
通过使用 Laravel 的路由组和控制器,我们可以轻松地为每个路由定义不同的操作和权限。使用这些技术,我们可以在短时间内构建强大的 Web 应用程序,满足多种需求和要求。