Laravel url别名,生成url时不匹配


Laravel url alias, mismatch in url generation

我有一个Laravel 5.2应用程序,我想在2个不同的域/路由上显示相同的页面。我使用以下路由结构使其工作:

到主域的路由:

Route::group(['domain' => 'www.primarydomain.com',
              'prefix' => 'demo-page']), function(){
    Route::get('/my-page', 'MyController@index');
    Route::get('/my-second-page', 'MyController@getPageTwo');
}

到我的辅助域的路由(注意:没有前缀!):

Route::group(['domain' => 'www.secundarydomain.com',]), function(){
        Route::get('/my-page', 'MyController@index');
        Route::get('/my-second-page', 'MyController@getPageTwo');
}

这个想法是两条路线都可以工作,而且它们确实可以。www.secundarydomain.com/my-page和www.primarydomain.com/demo-page/my-page都可以。

问题是当我现在想要生成一个链接到我的第二个页面。为了在视图中构建URL,我使用以下函数生成到my-second-page的链接:

url('/my-page')

这个函数总是生成一个到www.primarydomain.com/my-page的链接,而我需要一个到www.primarydomain.com/demo-page/my-page的链接。

有什么简单的解决办法吗?可以使用中间件解决这个问题吗?还是需要自定义URL函数?

预期结果:

url('my-page')在www.primarydomain.com上应该生成到www.primarydomain.com/demo-page/my-page的链接

www.secondarydomain.com上的url('my-page')应该生成到www.secondarydomain.com/my-page的链接

最简单的方法是创建自己的帮助器,如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' => 'MyController@index'
    ]);
    Route::get('/my-second-page', [
        'as' => 'my_second_page_prefixed'
        'uses' => 'MyController@getPageTwo'
    ]);
}

然后你可以通过使用{{ route('my_page_prefixed') }}或任何其他别名在刀片模板上调用别名路由