【问题标题】:Laravel url alias, mismatch in url generationLaravel url别名,url生成不匹配
【发布时间】:2017-03-19 02:51:19
【问题描述】:

我有一个 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 函数?

预期结果:

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

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

【问题讨论】:

    标签: php laravel laravel-5.2 laravel-routing


    【解决方案1】:

    您可以为您的路线分配别名。

    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') }} 或任何其他别名在刀片模板上调用您的别名路由。

    【讨论】:

    • 这不是一个解决方案,因为主域和辅助域都使用相同的代码。因此,不可能为每个域使用不同的别名
    【解决方案2】:

    最简单的方法是create your own helper,例如custom_url(),并使用它来代替url()

    您可以查看原始 url() 助手的工作原理并创建类似的助手。看这里:

    https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/helpers.php#L806

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 2014-01-04
      • 2017-01-05
      • 2019-03-10
      • 2023-03-14
      • 2013-10-02
      • 2015-01-15
      • 2023-04-07
      相关资源
      最近更新 更多