Arnout
Arnout

Reputation: 667

Laravel url alias, mismatch in url generation

I have a Laravel 5.2 application where I want to display the same page on 2 different domains / routes. I have it working using the following route structure:

The routes to my primary domain:

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

The routes to my secundary domain (note: no prefix!):

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

The idea is that both routes will work, and they do. Both www.secundarydomain.com/my-page and www.primarydomain.com/demo-page/my-page work.

The issue is when I now want to generate a link to my second page. For building my URL's in my views, I'm using the following function to generate a link to my-second-page:

url('/my-page')

This function always generates a link to www.primarydomain.com/my-page, while I need a link to www.primarydomain.com/demo-page/my-page.

Is there any easy solution to resolve this? Can this be resolved using middleware, or will a custom URL function be needed?

Expected results:

url('my-page') on www.primarydomain.com should generate a link to www.primarydomain.com/demo-page/my-page

url('my-page') on www.secondarydomain.com should generate a link to www.secondarydomain.com/my-page

Upvotes: 1

Views: 1530

Answers (2)

neilbrysonmc
neilbrysonmc

Reputation: 11

You can assign aliases to your routes.

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'
    ]);
}

And then you can call your aliased route on your blade templates by using {{ route('my_page_prefixed') }} or any other alias.

Upvotes: 0

Alexey Mezenin
Alexey Mezenin

Reputation: 163948

Easiest way to do that is to create your own helper, like custom_url() and use it instead of url().

You can look how original url() helper works and create similar one. Look here:

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

Upvotes: 1

Related Questions