Laravel url别名,url生成不匹配
我有一个Laravel 5.2应用程序,我想在两个不同的域/路线上显示相同的页面。我有工作使用以下路线结构:Laravel url别名,url生成不匹配
的路线,我的主域:
Route::group(['domain' => 'www.primarydomain.com',
'prefix' => 'demo-page']), function(){
Route::get('/my-page', '[email protected]');
Route::get('/my-second-page', '[email protected]');
}
我secundary域的路由(注:无前缀):
Route::group(['domain' => 'www.secundarydomain.com',]), function(){
Route::get('/my-page', '[email protected]');
Route::get('/my-second-page', '[email protected]');
}
的想法是这两条路线都可以工作,而且他们这样做。 www.secundarydomain.com/my-page和www.primarydomain.com/demo-page/my-page都可以工作。
问题是我现在想要生成一个链接到我的第二页。为构建我的网址在我的意见,我使用下面的函数来生成一个链接到我,第二页:
url('/my-page')
这个函数总是生成一个链接到www.primarydomain.com/my-page,而我需要链接到www.primarydomain.com/demo-page/my-page。
有没有简单的解决方案来解决这个问题?这可以使用中间件来解决,还是需要一个自定义的URL功能?
预期的结果:
url('my-page')
上www.primarydomain.com应产生于www.secondarydomain.com链接到www.primarydomain.com/demo-page/my-page
url('my-page')
应该产生一个链接到www.secondarydomain.com/my-page
最简单的方法是create your own helper,如custom_url()
并用它代替url()
。
你可以看看原始url()
助手的工作原理和创建类似。看看这里:
https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/helpers.php#L806
您可以指定别名到您的路线。
Route::group(['domain' => 'www.primarydomain.com', 'prefix' => 'demo-page']), function(){
Route::get('/my-page', [
'as' => 'my_page_prefixed',
'uses' => '[email protected]'
]);
Route::get('/my-second-page', [
'as' => 'my_second_page_prefixed'
'uses' => '[email protected]'
]);
}
然后您可以使用{{ route('my_page_prefixed') }}
或任何其他别名在刀片模板上调用别名路径。
这不会是一个解决方案,因为主域和辅助域都使用相同的代码。所以每个域使用不同的别名是不可能的 – Arnout