2013-03-08 137 views
0

在Laravel中,默认控制器是Home_Controller。不过,我有一个名为前端的控制器。我想用这个而不是家庭控制器。更改Laravel的默认(根)控制器

当我这样注册的路由:

Route::controller(Controller::detect()); 

然后/offer的请求将从家庭控制器等[email protected]内处理。我想使用[email protected]并从网站的根目录访问它 - 不像/frontend/offer

我该怎么办? 在此先感谢。

+2

作为一个脱离主题,我不会推荐你使用Controller :: detect()。它不推荐在Laravel 3上,并且从Laravel 4完全删除,因为它存在问题,并且使开发人员无法控制路由。你应该使用Route :: controller('controller_name_here')。 – vFragosop 2013-03-08 15:08:43

+0

@ViníciusFragosoPinheiro谢谢你!你能提供一个资料来源,让我可以阅读更多资讯吗 – 2013-03-08 15:23:28

+0

[Laravel Docs](http://laravel.com/docs/routing#controller-routing)是最好的地方。即使它开始建议Controller :: detect(我希望他们有一天能够修复),下面有一个关于注册家庭控制器和多个控制器的例子。现在,关于Controller :: detect,有[one](http://forums.laravel.io/viewtopic.php?id=6058#p30915)或[two](http://forums.laravel.io/viewtopic .php?id = 6013#p30759)在论坛上建议不要使用它。 – vFragosop 2013-03-08 17:19:41

回答

0

添加到您的routes.php文件:

Route::get('/', array('as' => 'any.route.name', 'uses' => '[email protected]')); 

如果您有任何其他/路线,只是将其删除。

+0

我认为你不明白这个问题。我想注册一个**控制器**,而不是一个动作。 – 2013-03-08 15:24:42

+0

控制器是一个类,一个方法必须被称为索引或什么,是不是:) – Usman 2013-03-08 16:38:36

+0

看到我对第二个答案的意见。我想“替换”home控制器的硬编码定义,所以'URL :: home()'解析为'frontend @ index' – 2013-03-08 21:24:03

1

Home_Controller是Laravel 3中存在的硬编码约定之一,但是仍然有方法定义路由指向Frontend_Controller方法,我的偏好是。

Route::any('/(index|offer|something)', function ($action) 
{ 
    return Controller::call("[email protected]{$action}"); 
}); 

限制这个是你需要定义所有支持的“动作”方法Frontend_Controller

+0

我已经试过了,但我想改变“hard正如你所说的那样,“编码”定义。我的意思是,函数'URL :: home()'将输出'frontend @ index'而不是'home @ index',并且使用这个控制器作为DEFAULT。 – 2013-03-08 20:55:18

+1

而且''Home_Controller'是硬编码的,我可以更改硬编码的配置吗? – 2013-03-08 21:15:53

1

我的猜测是,你认为Home_Controller是某种违约的唯一原因是因为你使用的控制器::检测();我真的没有看到文档中的任何东西让我觉得Home_Controller是什么特别的。事实上,它甚至不像它在示例文档中被路由到的那样。鉴于此,我的第一个建议是摆脱Controller :: detect(),看看是否解决了你的问题。

除此之外,你有没有尝试将前端注册为名为home的路由?看来所有的URL :: home()都是搜索'Home'路线,然后重定向到它。当使用控制器路由时,可以通过一些事情来完成。

Route::get('/', 
    array(
     'as' => 'home', 
     'uses' => '[email protected]' 
    ) 
); 

或者是不是你想要的效果?你是否希望所有未被发现的路由都被重定向到你的前端控制器?

如果你关心你的URL看起来相当,你也许可以使用一些重写规则.htaccess文件,使路由到/前端/索引透明您可以将用户的整个过程。

+0

辉煌。但我无法摆脱控制器前缀,我想我可以在laravel本身中进行更改,而不是修改.htaccess文件。 – 2013-03-10 12:07:51

+0

您是什么意思控制器前缀? – Jonathan 2013-03-11 01:47:49

+0

“使您的用户可以透过路由到/前端/索引的整个过程。” - 我的意思是'/前端/ {动作}'将成为'/ {动作}' – 2013-03-11 12:04:28