Laravel 5.1 именованное разрешение маршрута с неработающим поддоменом

Спасибо за любую помощь, которую вы можете предоставить. Я 10 дней изучаю Laravel 5.1, поэтому буду очень признателен за любые предложения по поводу того, что я пропустил!

У меня проблема с разрешением именованных маршрутов в Laravel 5.1. Я создаю приложение, которое будет иметь URL-адрес в формате {organisation}.website.com, где {organisation} определяется при регистрации клиента.

Код отлично маршрутизируется при использовании примеров поддоменов, если я жестко кодирую адрес маршрута (например: redirect('/home');), но когда я пытаюсь выполнить маршрутизацию по именованным маршрутам из контроллера (например: redirect()->route('session.create');), маршруты разрешаются следующим образом:

http://%7Borganisation%7D.website.com/home

Мои маршруты выглядят так:

<?php

/**
 * Entity routes - resolves {organisation}.website.com
 */
Route::group([
        'domain' => '{organisation}.' . env('APP_DOMAIN')
    ], function(){

    /*
    |----------------------------------------------------------------------
    | Freely available routes for login, registration, password reset etc
    |----------------------------------------------------------------------
    */
    Route::group([
        'middleware' => 'guest'
    ], function(){

        // Login
        Route::get('login', ['uses' => 'SessionController@create', 'as' => 'session.create']);
        Route::post('login', ['uses' => 'SessionController@store', 'as' => 'session.check']);

    });

    Route::group([
        'namespace' => 'Website',
        'middleware' => ['authorise'],
    ], function(){


    });

    /*
    |-----------------------------------------------------------------------
    | Potentially secured routes
    |-----------------------------------------------------------------------
    */
    Route::group([
        'middleware' => ['authorise']
    ], function(){

        // Logout and destroy all Auth data
        Route::get('logout', ['uses' => 'SessionController@destroy', 'as' => 'session.destroy']);

    });
});

В своих контроллерах я называю маршрутизацию следующим образом:

return redirect()
    ->route('session.create')
    ->withInput($request->only('email', 'remember'))
    ->withErrors([
        'email' => $this->getFailedLoginMessage(),
    ]);

и он успешно завершается, но с указанным выше URL и 404. Если я перейду на это, он будет работать отлично.

return redirect('/home')
    ->withInput($request->only('email', 'remember'))
    ->withErrors([
        'email' => $this->getFailedLoginMessage(),
    ]);

Что я пропустил в субдомене моей организации, настроенном для работы именованных маршрутов? Спасибо!


person TheRealPapa    schedule 05.08.2015    source источник


Ответы (1)


Все заработало. Ниже показано, как я исправил проблему, которую, по сути, мне пришлось «на лету» привязать к маршруту, являющемуся слагом поддомена. Надеюсь, это кому-то поможет!

Сначала мне пришлось передать класс Organisation моим методам контроллера и изменить вызовы маршрута следующим образом:

public function destroy(Organisation $organisation)
    {
        Auth::logout();

        return redirect()->route('session.create', ['organisation' => $organisation->slug]);
    }
person TheRealPapa    schedule 05.08.2015