2015-01-09 62 views
1

我在我的應用程序中使用子域作爲用戶帳戶的儀表板。在儀表板的視圖中,我包含了一個主模板,其中包含導航到網站根目錄的鏈接。當我訪問子域時,我注意到導航中的所有鏈接都根據子域名進行了更改。Laravel - 所有路由鏈接都以子域爲前綴

在我的主模板中,使用幫助函數route()生成鏈接。當在我的子域中查看生成的鏈接時,鏈接將從domain.com/about更改爲sub.domain.com/about以及所有其他鏈接。

Route::group(['domain' => 'dashboard.project.app', 'before' => 'auth'], function() 
{ 
    Route::controller('/', 'DashboardController'); 
}); 

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

Route::resource('products', 'ProductsController'); 

Route::resource('support', 'SupportController'); 

所以參觀dashboard.project.app會觸發getIndex()在DashboardController在訪問project.app會觸發指數()中的HomeController

太棒了,我們已經有了這麼多。現在我有一個簡單的視圖,我將其用作一個模板,它將包含指向在子域之外定義的指定資源路由的URL。

同樣,URL使用幫助函數route()。在一個被稱爲在DashboardController視圖延伸的模板我會像在導航的鏈接:

<a href="{{ route('products.index') }}">Products</a>

如期望然而改變<a href="http://dashboard.project.app/products">Products</a>在子域下的圖所示,當這將產生<a href="http://project.app/products">Products</a>

所以我想所需的輸出永遠是project.app/products永不dashboard.project.app/products作爲訪問該鏈接將導致404不存在的getProducts()方法我的DashboardController。這是錯誤的鏈接!

得到我在說什麼?

回答

1

如果指定的路由沒有被定義爲特定於域,那麼url生成器將使用您當前所在的任何域。如果路由應該是特定於某個領域,指定它:

Route::group(['domain' => 'project.app'], function() { 
    Route::resource('products', 'ProductsController'); 
    Route::resource('support', 'SupportController'); 
}); 

現在,甚至從你的儀表板,route('products.index')應該給你project.app/products