2013-03-08 132 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