2015-01-09 73 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