如何在 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 中设置默认控制器?的主要内容,如果未能解决你的问题,请参考以下文章