【发布时间】:2018-04-19 14:44:00
【问题描述】:
有疑问帮帮我,我在laravel有一个应用,想在同一个Route中调用多个Controller,可以吗?
这个方法我试过了,还是不行
$api->get('document', ['as' => 'system.api.manager.v1.document.listDoc1', 'shield' => ['system.manager.document.list'], 'any' => true, 'uses' => 'Doc1Controller@grid']);
$api->get('document', ['as' => 'system.api.manager.v1.document.listDoc2', 'shield' => ['system.manager.document.list'], 'any' => true, 'uses' => 'Doc2Controller@grid']);
$api->get('document', ['as' => 'system.api.manager.v1.document.listDoc3', 'shield' => ['system.manager.document.list'], 'any' => true, 'uses' => 'Doc3Controller@grid']);
【问题讨论】:
-
你能发布这些方法吗?通常如果发生这种情况,您可以将控制器逻辑放在一个类中(多个方法)并创建一个新的控制器方法来调用这些方法
-
这行不通,原因很明显。 Laravel 路由器根据您定义为
get方法的第一个参数的路径匹配路由。由于您已经定义了与document相同的路径 3 次,因此您实际上每次都覆盖了先前的定义,因此您的代码只匹配最后一个并执行Doc3Controller@grid。考虑到这一点,请考虑您正在尝试访问该 URLhttps://yourdomain.com/document。如果唯一的参考是/document,Laravel 路由器怎么知道你是想访问listDoc1、listDoc2还是listDoc3路由。 -
@PH27 请提供更多关于您要实现的目标的背景信息,以便人们可以提供可行的方法来解决此问题。
-
我是来留下反馈的,我要做我需要的,我在Repository中创建了一个函数来返回我需要在网格上显示的数据,所以我只调用了一个函数我的路由中的控制器,它调用我在存储库中创建的函数。谢谢各位。
标签: php laravel controller routes