个性化阅读
专注于IT技术分析

Laravel资源控制器

Laravel资源控制器以单行代码将CRUD路由提供给控制器。资源控制器用于创建处理应用程序存储的所有http请求的控制器。

resource()是一个类似于get()方法的静态函数, 它可以访问我们可以在控制器中使用的多个路由。

resource()方法的语法:

路线:: resource(’posts’, ‘PostController’);

在以上语法中, “ posts”包含所有路由, “ PostController”是控制器的名称。在这种情况下, 我们不需要像在get()方法中那样指定方法名称, 例如@index, 因为PostController类中已经可以使用create(), store(), destroy()方法。

让我们通过一个例子来理解:

步骤1:使用以下命令创建控制器:

php  artisan make:controller PostController -resource;

上面的命令将在app / Http / Controllers / PostController.php目录中创建Controller。 PostController类包含每个资源操作的方法。

下面给出了PostController.php文件的结构:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return \Illuminate\Http\Response
     */
public function index()
{
        
//
    
}
/**
     * Show the form for creating a new resource.
     * @return \Illuminate\Http\Response
      
*/
 public function create()
{
        
//
    
}
/**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request   $request
     * @return \Illuminate\Http\Response
     */
public function store(Request $request)
{
        
//
    
}
/**
     * Display the specified resource.
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
public function show($id)
{

  //
}
/**
     * Show the form for editing the specified resource.
     * @param  int  $id
     * @return  \Illuminate\Http\Response
     */
 public function edit($id)
    
{
        
//
    
}
/**
     * Update the specified resource in storage.
     * @param  \Illuminate\Http\Request   $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
 public function update(Request $request, $id)
{
        
//
    
}
/**
     * Remove the specified resource from storage.
     * @param  int  $id
     * @return  \Illuminate\Http\Response
     */
 public function destroy($id)
 {
        
//}}

步骤2:现在, 我们需要注册到Controller的资源丰富的路由, 可以按照以下步骤进行操作:

Route::resource('posts', 'PostController');

打开Git Bash窗口, 然后输入命令php artisan route:list。此命令产生以下输出:

Laravel资源控制器

resource()方法中的post参数产生上面输出中显示的名称或资源及其对应的方法。在上面的输出中, posts.destroy将参数发送到Delete方法, 这在Laravel中非常特殊。

让我们通过一个例子来理解资源的概念。

访问PostController类的show()方法

假设我们要调用PostController.php文件的show()方法。为此, 在show()方法中添加代码。我在show()方法中添加了以下代码:

public function show($id)
{
return "show method is called and ID is : ". $id;
}

我们知道posts.show的URI是posts / {posts}, 这意味着我们还需要输入参数才能访问PostController类的show()方法。

假设我以“ localhost / laravelproject / public / posts / 58”输入URL, 则输出为:

Laravel资源控制器

访问PostController类的create()方法

步骤1:首先, 我们需要在create()方法中添加代码。我添加了以下代码:

public function create()
{
     return "This is the create method";
}

我们知道posts.create的URI是posts / create, 因此访问create()方法的URL将是“ localhost / laravelproject / public / posts / create”。

步骤2:在浏览器中输入URL’localhost / laravelproject / public / posts / create’, 则输出为:

Laravel资源控制器

为多个控制器注册路由

我们可以通过将数组传递给resources()方法来注册多个控制器的路由。假设我要为两个控制器(例如PostController和StudentController)注册路由。以下是实现此目的的步骤:

步骤1:首先, 你需要使用以下命令创建PostController和StudentController:

Php artisan make:controller PostController;  // to create the PostController.
Php artisan make:controller StudentController;  // to create the StudentController.

步骤2:在web.php文件中添加下面给出的代码以注册路由:

route::resources(
['posts'=>'PostController', 'student'=>'StudentController']
);

步骤3:在Git Bash窗口中输入命令php artisan route:list。

Laravel资源控制器

上面的屏幕显示PostController和StudentController的路由都已注册。

部分资源路线

当我们不想为所有方法注册路由时, 可以通过仅指定控制器可以处理的功能来注册。

创建部分资源路由的步骤:

步骤1:首先, 我们使用以下命令创建StudentController:

php artisan make:controller StudentController;
Laravel资源控制器

步骤2:现在, 我们在web.php文件中添加以下命令以创建部分资源路由。

Route::resource('student', 'StudentController', ['only' => ['create', 'show']]);

步骤3:要验证上述代码是否已为指定方法注册了路由, 请在Git Bash窗口中键入命令“ php artisan route:list”。

Laravel资源控制器

上面的屏幕显示已经生成了create()和show()方法的路由。

命名资源路线

控制器的所有方法都有默认的路由名称, 但是Laravel允许你通过传递名称数组来覆盖路由名称。名称数组包含要指定的路由名称。

让我们通过一个例子来理解“命名资源路线”。

  • 我们可以在web.php文件中添加以下代码来命名资源路由。
Route::resource('student', 'StudentController', ['names' => ['create' =>'student.build']]);
  • 现在, 在Git Bash窗口中输入命令php artisan route:list。
Laravel资源控制器

上面的屏幕显示create()方法的路由名称已重命名为student.build, 其默认名称为student.create。

命名资源路由参数

Route :: resource()方法自动为所有资源路由生成路由参数, 但是我们可以使用parameters数组覆盖路由参数。 parameters数组是资源名称和路由参数的关联数组。

  • 我们可以通过在web.php文件中添加以下代码来覆盖路由参数:
Route::resource('student', 'StudentController', ['parameters' => ['student' => 'admin_student']]);

上面的代码将路由参数即admin_student分配给学生资源。

  • 要检查所有路由参数的列表, 我们使用以下命令:php artisan route:list。
Laravel资源控制器

上面的屏幕显示在路由中添加了admin_student参数。


赞(0)
未经允许不得转载:srcmini » Laravel资源控制器

评论 抢沙发

评论前必须登录!