在Laravel中,默认控制器是Home_Controller
。但是我有一个名为frontend的控制器。我想用它而不是家用控制器。
当我注册这样的路线时:
Route::controller(Controller::detect());
然后将在{@ 1}}等家庭控制器内处理对/offer
的请求。我想使用home@offer
并从网站的根目录访问它 - 而不是frontend@offer
。
我该怎么办? 提前谢谢。
答案 0 :(得分:1)
Home_Controller
是Laravel 3中存在的硬编码约定之一,但仍有一些方法可以定义路由以指向Frontend_Controller
方法,我的偏好是。
Route::any('/(index|offer|something)', function ($action)
{
return Controller::call("frontend@{$action}");
});
此限制是您需要在Frontend_Controller
中定义所有支持的“操作”方法。
答案 1 :(得分:1)
我的猜测是你认为Home_Controller是某种默认值的唯一原因是因为你使用的是Controller :: detect();我真的没有在文档中看到任何东西让我觉得Home_Controller是特别的东西。事实上,它甚至看起来不像它在示例文档中被路由到。鉴于此,我的第一个建议是摆脱Controller :: detect(),看看是否能解决你的问题。
除此之外,您是否尝试将前端注册为名为home的路线?似乎所有URL :: home()都会搜索“Home”路由,然后重定向到它。使用控制器路由时,可以使用某些效果来完成。
Route::get('/',
array(
'as' => 'home',
'uses' => 'frontend@index'
)
);
或者那不是你想要的效果吗?您是否希望将未找到的所有路由重定向到您的前端控制器?
如果您担心自己的网址看起来很漂亮,那么您可以在.htaccess文件中使用一些重写规则,以便让您的用户对路由到/ frontend / index的整个过程变得透明。
答案 2 :(得分:0)
将此添加到routes.php:
Route::get('/', array('as' => 'any.route.name', 'uses' => 'frontend@offer'));
如果您有任何其他/
路线,请将其删除。