📜  laravel 8 路由 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:11.988000             🧑  作者: Mango

Laravel 8 路由

Laravel 8 是一个流行且强大的 PHP Web 框架。它提供了许多工具和库,使得 Web 开发更加快捷和简便。

其中一个 Laravel 8 的核心组件是路由。路由允许您定义应用程序的 URL 结构,同时将 URL 映射到相应的控制器方法。

安装 Laravel 8

在学习 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() 方法将中间件 authCheckAge 应用到了不同的路由中。

您可以使用全局中间件或分配给路由或控制器的中间件。

结论

Laravel 8 路由提供了灵活和强大的方式来定义应用程序的 URL 结构,并将 URL 映射到不同的控制器方法。

通过以上介绍,相信您已经掌握了 Laravel 8 路由的基本使用方法,希望对您的开发工作有所帮助。