📜  laravel 路由控制器 - PHP (1)

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

Laravel路由控制器 - PHP

Laravel是一款流行的PHP框架,它提供了许多方便的功能,包括可扩展的路由系统和强大的控制器。本文将介绍Laravel中的路由和控制器,以及它们如何协同工作来创建高效、可扩展的Web应用程序。

路由

路由是指将URL请求映射到相应的处理程序的过程。在Laravel中,路由是通过定义路由表来实现的。路由表指定了应用程序中所有可用的路由,以及每个路由对应的处理程序。

定义路由

在Laravel中,可以通过两种方式来定义路由。第一种方式是使用Closure匿名函数定义路由:

Route::get('/hello', function () {
    return 'Hello, World!';
});

这里我们调用了Laravel中的Route类,使用get方法来定义一个GET请求的路由,路由的地址为/hello,当请求到达该路由时,返回Hello, World!的响应。

另一种方式是使用控制器定义路由:

Route::get('/user/{id}', 'UserController@show');

这里我们使用UserController@show来作为路由的处理程序,UserController表示控制器的名称,show表示该控制器中的处理方法。

路由参数

在Laravel中,可以使用路由参数来捕获传递给路由的变量。路由参数可以通过使用{}括起来的变量名称来定义,例如:

Route::get('/user/{id}', function ($id) {
    return 'User ID: ' . $id;
});

当访问/user/123时,将会输出User ID: 123

路由组

在Laravel中,可以使用路由组来对路由进行组织和设置共同的路由属性,例如中间件和路由前缀。例如:

Route::middleware(['auth'])->group(function () {
    Route::prefix('admin')->group(function () {
        Route::get('/dashboard', 'DashboardController@index');
        Route::get('/users', 'UserController@index');
    });
});

这里我们把/admin中的路由都包含在一个路由组中,这个路由组拥有auth中间件,以及一个admin前缀。

控制器

在Laravel中,控制器是负责处理路由请求的类。控制器将请求传递给模型,获取数据,并将其传递到视图来呈现响应。

创建控制器

想要创建一个控制器,可以使用Artisan命令行工具。例如:

php artisan make:controller UserController

这将创建一个名为UserController的控制器。可以通过使用--resource选项创建一个支持RESTful资源的控制器。

控制器方法

控制器类中的方法负责处理路由请求。例如:

class UserController extends Controller
{
    public function show($id)
    {
        $user = User::find($id);
        return view('user.show', ['user' => $user]);
    }
}

这里我们定义了一个show方法,用于在视图中显示一个用户的信息。当路由请求到达该方法时,将获取用户的信息,并将其传递给user.show视图文件。

控制器中间件

在Laravel中,可以向控制器或特定方法添加中间件,以在处理请求之前执行代码。例如:

class UserController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function show($id)
    {
        $user = User::find($id);
        return view('user.show', ['user' => $user]);
    }
}

这里我们在控制器的构造函数中添加了auth中间件,以确保用户必须先进行身份验证才能访问该控制器的任何方法。