如何在 Laravel 中设置默认控制器?

Posted

技术标签:

【中文标题】如何在 Laravel 中设置默认控制器?【英文标题】:How to set the default controller in Laravel? 【发布时间】:2013-01-02 09:39:00 【问题描述】:

我正在使用 Laravel php 框架并且想知道一些事情。默认的application/routes.php 文件包含以下内容:

Route::get('/', function()

    return View::make('home.index');
);

这只是输出视图,但我如何从那里调用控制器?

我可以删除上面的整个路由并将其替换为Route::controller('home'),这似乎使用默认 URL 上的主控制器(即example.com/)。但是像Route::controller('article') 这样的任何其他控制器都不起作用,只能在example.com/article 上使用。如何将文章控制器设置为默认值?

【问题讨论】:

【参考方案1】:

只需将控制器作为字符串传递,在类名和方法名之间加上@

Route::get('/', 'article@index');

阅读the docs(滚动到标题为注册指向控制器操作的路由的示例)。

【讨论】:

谢谢,不知何故我错过了页面的那部分。 home 的事情呢? Route::get('/', 'home@index')Route::controller('home') 一样吗? @DisgruntledGoat - 不。 Route::get('/', 'home@index') 只会注册索引方法,并且只在/ 路由上。 Route::controller('home') 将注册其所有方法,映射到它们各自的 URL。 后者如何工作?如果您将整个控制器注册到 /,那么 /example 在名为“示例”的控制器与家庭控制器上的“示例”方法之间不会变得模棱两可。 您不能将整个控制器注册到/。要注册路线,您需要注册一种特定的方法。如果要注册整个控制器,请使用Route::controller('controller_name') 我的意思是,如果您使用Route::controller('home') 注册家庭控制器,它将成为/ 上的默认控制器(除非已经指定/)。或者至少,注册了家庭控制器的索引方法。【参考方案2】:

/”是特殊位置,可以通过Route::get('/','home@index')设置。

对于家庭控制器上的所有其他操作,您将拥有 urls,例如“/home/action1”或“/home/action2”。

我只是想让您了解将任何控制器分配给“/”没有任何好处和需要。

我希望我的回答很清楚。同样,这不是对您的问题的尝试回答,而是在您遇到路线处理时给您的建议。几天前我和你处于同一阶段:)

【讨论】:

这是一篇旧帖子,但它是 Google 中的***帖子之一,因此我对此发表评论。如果有人发现这一点,当您设置 Route::controller('/', 'Controller') 时,您会破坏所有其他链接,这就是为什么使用默认的 '/' 作为控制器路由不是一个好主意

以上是关于如何在 Laravel 中设置默认控制器?的主要内容,如果未能解决你的问题,请参考以下文章

在控制器中设置Laravel会话生存期

如何在控制台应用程序中设置默认连接字符串?

在laravel测试中设置会话ID

如何在 Laravel 迁移中设置默认 DateTime()? [复制]

在 laravel 8 中设置单元测试环境

在控制器中设置的用户默认值无法在控制器中读取