📜  拉拉维尔 | Route::resource vs Route::controller

📅  最后修改于: 2022-05-13 01:57:04.986000             🧑  作者: Mango

拉拉维尔 | Route::resource vs Route::controller

在 Laravel 中,可以通过以下两种方法中的任何一种来控制 Route 操作,使用Route::resource方法或使用Route::controller方法。但两者都有其不同之处。

Route::resource: Route::resource方法是一个RESTful 控制器,它生成应用程序所需的所有基本路由,并且可以使用控制器类轻松处理。它有两个参数,第一个是基本传入请求URI(统一资源标识符) ,第二个是用于处理请求的控制器的类名。使用这种方法,我们可以获得默认定义的路由名称和路径,其中包含任何应用程序所需的 7 种不同操作。

注意:要获取创建的路由列表,我们必须在命令行中使用命令“PHP artisan route: list”。

例子:

  • 路线。 PHP
    Route::resource(‘gfg’, ‘GeeksforGeeksController’);
  • 输出:

Route::controller: Route::controller方法是一个隐式控制器,它也接受两个参数,并且与Route::resource方法相同,即第一个是基本传入请求URI(统一资源标识符) ,第二个是类名用于处理请求的控制器。使用这种方法,我们在如何定义我们的路由名称上有一点灵活性。默认情况下没有定义路由名称,就像使用Route::resource方法一样。

注意:要获取创建的路由列表,您必须在命令行中使用命令“PHP artisan route: list”。

例子:

  • 路线。 PHP:
    Route::controller(‘gfg’, ‘GeeksforGeeksController’);
  • GeeksforGeeksController。 PHP:当控制器类文件中没有定义方法时,我们得到如下输出:
    class GeeksforGeeksController extends Controller
    {
      // Handle request
    }
    
  • 输出:
  • GeeksforGeeksController。 PHP:当我们在控制器类文件中定义 get 和 post 方法时,我们得到如下所示的输出。
    class GeeksforGeeksController extends Controller
    {
      public function getGeek()
      {
        // Handle get request
      }
      public function postGeek($id)
      {
        // Handle post request
      }
    }
    
  • 输出:

在指定任一路由之前,您必须创建要在路由中使用的控制器类。您可以使用简单的工匠命令“PHP artisan make:controller GeeksforGeeksController”即“PHP artisan make:controller”来做到这一点。 Route:Controller方法一直支持到Laravel 5.1 ,之后的版本不再支持。所以,在后来的 Laravel 版本中,我们使用了Route::resource方法。