📅  最后修改于: 2023-12-03 15:17:11.988000             🧑  作者: Mango
Laravel 8 是一个流行且强大的 PHP Web 框架。它提供了许多工具和库,使得 Web 开发更加快捷和简便。
其中一个 Laravel 8 的核心组件是路由。路由允许您定义应用程序的 URL 结构,同时将 URL 映射到相应的控制器方法。
在学习 Laravel 8 路由之前,您需要安装 Laravel 8。
您可以按照官方文档 https://laravel.com/docs/8.x/installation 中的说明进行安装。
定义路由是 Laravel 8 中的一个关键概念。您可以通过路由文件 routes/web.php
定义所有 web 路由。
以下是一个简单的路由示例:
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Route::get('/about', function () {
return view('about');
});
在上面的示例中,我们使用 Route::get()
定义了两个路由,分别是 /
和 /about
。
Route::get()
表示使用 HTTP GET 方法来处理请求。
第一个参数是路由的 URL,第二个参数是回调函数,该函数在路由匹配时会执行。
在上面的示例中,我们使用匿名函数作为回调函数,并在回调函数中返回了一个视图。
您可以使用 name()
方法为路由定义一个名称。
以下是一个命名路由示例:
use Illuminate\Support\Facades\Route;
Route::get('/user/{id}', function ($id) {
//
})->name('user.profile');
在上面的示例中,我们使用 name()
方法为路由定义了一个名称 user.profile
。
现在,我们可以在应用程序中使用 route()
函数来生成 URL:
$url = route('user.profile', ['id' => 1]);
使用路由参数,您可以将变量包含在路由 URL 中。
以下是一个路由参数示例:
use Illuminate\Support\Facades\Route;
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});
在上面的示例中,我们在路由 URL 中使用了一个 id
参数。当匹配此路由时,Laravel 8 将调用回调函数,并将 URL 中的 id
参数传递给该函数。
现在,访问 /user/1
,将会看到 User 1
的输出。
有时,您可能希望将参数设置为可选的。您可以在参数名称后面加上 ?
来实现这一点。
以下是一个可选参数示例:
use Illuminate\Support\Facades\Route;
Route::get('/user/{id?}', function ($id = null) {
return 'User '.$id;
});
在上面的示例中,我们使用 ?
将 id
参数变成了可选参数。如果使用此路由的 URL 中没有 id
参数,则 $id
变量将为 null
。
现在,访问 /user
,将会看到 User
的输出。
Laravel 8 还提供了一种资源控制器,可以更方便地定义 CRUD 操作。资源控制器可以自动为您生成路由。
以下是一个资源控制器示例:
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
Route::resource('users', UserController::class);
在上面的示例中,我们使用 Route::resource()
方法为 users
路由定义了一个资源控制器 UserController
。
现在,Laravel 8 将自动生成以下路由:
| Method | URI | Action | | ------ | -------------------------| --------------| | GET | /users | index | | POST | /users | store | | GET | /users/create | create | | GET | /users/{user} | show | | PUT | /users/{user} | update | | DELETE | /users/{user} | destroy | | GET | /users/{user}/edit | edit |
您可以使用路由中间件来过滤和扩展路由。
以下是一个路由中间件示例:
use Illuminate\Support\Facades\Route;
use App\Http\Middleware\CheckAge;
Route::get('/admin', function () {
//
})->middleware('auth');
Route::get('/user/profile', function () {
//
})->middleware(CheckAge::class);
在上面的示例中,我们使用 middleware()
方法将中间件 auth
、CheckAge
应用到了不同的路由中。
您可以使用全局中间件或分配给路由或控制器的中间件。
Laravel 8 路由提供了灵活和强大的方式来定义应用程序的 URL 结构,并将 URL 映射到不同的控制器方法。
通过以上介绍,相信您已经掌握了 Laravel 8 路由的基本使用方法,希望对您的开发工作有所帮助。