📜  Laravel路由控制器

📅  最后修改于: 2021-01-05 10:38:22             🧑  作者: Mango

路由控制器

路由控制器允许您使用用于处理请求的方法来创建控制器类。

现在,我们将通过一个示例来了解路由控制器。

步骤1:首先,我们需要创建一个控制器。在上一主题中,我们已经创建了名为“ PostController”的控制器。

步骤2:打开web.php文件并编写以下代码:

Route::get('/post','PostController@index');

在上面的代码中,“ / post ”是我们要访问的URL,而PostController是控制器的名称。 ' index '是PostController.php文件中可用方法的名称,@index表示当我们访问'/ post'URL时应该点击index()方法。

步骤3:添加下面突出显示的代码:

步骤4:在浏览器中输入URL,即localhost / laravelproject / public / host ,然后输出如下所示:

输出量

到目前为止,我们已经观察到如何访问控制器。现在,我们将看到如何将数据传递到Controller类。

将数据传递到控制器

让我们通过一个示例来了解如何将数据传递到Controller:

步骤1:打开web.php文件,并添加以下代码:

路线:: get('/ post / {id}','PostController @ index');

上面的代码在“ / post” URL中包含“ id”参数。

步骤2:编辑PostController.php文件。

public function index($id)
{
    return "ID is :". $id;
}

在上述情况下,我们更新了index()方法。我们已经在index()方法中传递了'id'参数。

步骤3:在网络浏览器中输入URL'localhost / laravelproject / post / 100 ',然后输出如下所示:

控制器和命名空间

当我们在Route :: get()方法中指定控制器类时,则无需指定完整的控制器名称空间。当RouteServiceProvider加载包含命名空间的所有路由文件时,我们只需要指定命名空间的App / Http / Controllers部分之后的类名即可。

如果完整的控制器类是App / Http / Controllers / Post / PostController ,那么我们可以如下所示注册Controller的路由:

路线:: get('\ post','Post \ PostController @ index');

单动控制器

如果要在控制器中使用单个方法,则可以在控制器上使用单个__invoke()方法。

当我们使用命令php artisan:make controller PostController创建控制器时, PostController文件的结构为:

现在,我们将__invoke()函数的代码添加到PostController类中:

最后,我们将代码添加到web.php文件中,该文件负责处理操作。

route::get('/post/{id}','PostController');

上面的代码命中了PostController类的__invoke()方法。得出的结论是,我们不需要编写@invoke方法来访问单个动作控制器。

输出量

当我们输入URL'localhost / laravelproject / public / post / 67 '时,输出将是:

如果未指定任何操作,即我们忘记编写__invoke()方法,则会引发UnexpectedValueExpression。

假设我们从PostController类中删除__invoke()方法,那么输出将是: