Laravel 资源控制器17 Mar 2025 | 5 分钟阅读 Laravel 资源控制器通过单行代码为控制器提供 CRUD 路由。 资源控制器用于创建一个控制器,该控制器处理应用程序存储的所有 HTTP 请求。 resource() 是一个静态函数,就像 get() 方法一样,可以访问我们可以在控制器中使用的多个路由。 resource() 方法的语法 Route::resource('posts','PostController'); 在上面的语法中,“posts”包含所有路由,“PostController”是控制器的名称。 在这种情况下,我们不需要像在 get() 方法中那样指定方法名称,例如 @index,因为 create()、store()、destroy() 方法已在 PostController 类中可用。 让我们通过一个例子来理解 步骤 1: 使用下面给出的命令创建控制器 上面的命令将在 app/Http/Controllers/PostController.php 目录中创建控制器。 PostController 类包含每个资源操作的方法。 PostController.php 文件的结构如下 步骤 2: 现在,我们需要将资源路由注册到控制器,这可以通过以下方式完成 打开 Git Bash 窗口,输入命令 php artisan route:list。 该命令产生以下输出 ![]() resource() 方法中的 post 参数生成上图输出中显示的名称或资源及其相应的方法。 在上面的输出中,posts.destroy 正在向 Delete 方法发送一个参数,这在 Laravel 中非常特别。 让我们通过一个例子来理解资源的概念。 访问 PostController 类的 show() 方法 假设我们要调用 PostController.php 文件的 show() 方法。 为此,请在 show() 方法中添加代码。 我在 show() 方法中添加了以下代码 我们知道 posts.show 的 URI 是 posts/{posts},这意味着我们还需要输入参数才能访问 PostController 类的 show() 方法。 假设我输入的 URL 为 'localhost/laravelproject/public/posts/58',那么输出将是 ![]() 访问 PostController 类的 create() 方法 步骤 1: 首先,我们需要在 create() 方法中添加代码。 我添加了以下代码 我们知道 posts.create 的 URI 是 posts/create,因此访问 create() 方法的 URL 将是 'localhost/laravelproject/public/posts/create'。 步骤 2: 在浏览器中输入 URL 'localhost/laravelproject/public/posts/create',然后输出将是 ![]() 为多个控制器注册路由我们可以通过将数组传递给 resources() 方法来注册多个控制器的路由。 假设我想为两个控制器注册路由,例如 PostController 和 StudentController。 以下是实现此目的的步骤 步骤 1: 首先,您需要使用以下命令创建 PostController 和 StudentController 步骤 2: 在 web.php 文件中添加以下代码以注册路由 步骤 3: 在 Git Bash 窗口中输入命令 php artisan route:list。 ![]() 上面的屏幕显示 PostController 和 StudentController 的路由都已注册。 部分资源路由当我们不想为所有方法注册路由时,我们可以通过仅指定控制器可以处理的那些函数来完成。 创建部分资源路由的步骤 步骤 1: 首先,我们使用以下命令创建 StudentController ![]() 步骤 2: 现在,我们在 web.php 文件中添加以下命令以创建部分资源路由。 步骤 3: 要验证上面的代码是否已为指定的方法注册了路由,请在 Git Bash 窗口中键入命令 'php artisan route:list'。 ![]() 上面的屏幕显示已经生成了 create() 和 show() 方法的路由。 命名资源路由控制器的所有方法都有一个默认路由名称,但 Laravel 允许您通过传递名称数组来覆盖路由名称。 名称数组包含您想要指定自己选择的路由名称。 让我们通过一个例子来理解“命名资源路由”。
![]() 上面的屏幕显示 create() 方法的路由名称已重命名为 student.build,其默认名称为 student.create。 命名资源路由参数Route::resource() 方法自动为所有资源路由生成路由参数,但我们可以使用 parameters 数组覆盖路由参数。 parameters 数组是资源名称和路由参数的关联数组。
上面的代码将路由参数,即 admin_student 分配给 student 资源。
![]() 上面的屏幕显示 admin_student 参数已添加到路由中。 下一主题Laravel 控制器中间件 |
我们请求您订阅我们的新闻通讯以获取最新更新。