Проблема маршрутизации поддоменов Laravel - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть три субдомена для каждого языка в приложении Laravel (ET, EN, LV, LT, поэтому мой домен будет выглядеть как et.app.foo.com и т. Д. Я создал группу маршрутов для субдоменов и обычного домена. Теперь естьразные типы пользователей, которые также используют группировку с префиксом и именем. Моя страница входа работает нормально, но все другие маршруты перестали работать. Я пытался прочитать все возможные решения, но не смог найти его.

Вот мой web.php

$appRoutes = function () {
    require base_path() . '/routes/publicRoutes.php';
    require base_path() . '/routes/physicianRoutes.php';
    require base_path() . '/routes/adminRoutes.php';
    require base_path() . '/routes/generalRoutes.php';
    require base_path() . '/routes/formRoutes.php';
};

/**
 * Group main domain routes
 */
Route::group(
    [
        'domain' => 'app.foo.com'
    ], $appRoutes);

/**
 * Group sub domain routes
 */
Route::group(
    [
        'domain' => '{subdomain}.app.foo.com',
        'as'     => '{subdomain}.'
    ], $appRoutes);

Теперь вот часть моих маршрутов администратора:

Route::group(
        [
            'prefix'     => 'admin',
            'as'         => 'admin.',
            'middleware' => ['auth', 'admin']
        ], function () {

        //when admin land on /home
        Route::get("/home",
            array('as'   => 'dashboard',
                  'uses' => 'Dashboard\HomeController@admin')
        );

И я получаю эту ошибку в маршрутах моего субдомена и маршрутах основного домена:

Missing required parameters for [Route: {subdomain}.admin.dashboard] [URI: admin/home]. (View: 

В моей навигации я вызываю функцию * 1014. * Как я могу изменить это, чтобы поддомены работали?

РЕДАКТИРОВАТЬ

Когда я вхожуURL-адрес вручную к адресной строке, он работает, но когда я наведу курсор мыши на мои hrefs, он не показывает адрес субдомена, но мой основной домен

EDIT2

Я создал собственный помощник для маршрутизации

        function subdomain_route($route)
    {
        if (Config::get('app.subdomain') != null):
            return route($route, ['subdomain' => \Config::get('app.subdomain')]);
        else:
            return route($route);

        endif;
    }

Теперь я вижу, что параметр для маршрута subdomain => en, но он все еще перенаправляет меня в основной домен.Как я могу это исправить?

1 Ответ

0 голосов
/ 21 августа 2018

Попробуйте разместить маршруты поддомена до маршрутов вашего основного домена в web.php

У меня была похожая проблема, которую я исправил, поместив Route::domain (или Route::group(['domain' => 'app.foo.com'], $appRoutes) в вашем случае) вверху файла web.php.

$appRoutes = function () {
    require base_path() . '/routes/publicRoutes.php';
    require base_path() . '/routes/physicianRoutes.php';
    require base_path() . '/routes/adminRoutes.php';
    require base_path() . '/routes/generalRoutes.php';
    require base_path() . '/routes/formRoutes.php';
};

/**
 * Group sub domain routes
 */
Route::group([
        'domain' => '{subdomain}.app.foo.com',
        'as'     => '{subdomain}.'
    ], $appRoutes);

/**
 * Group main domain routes
 */
Route::group(['domain' => 'app.foo.com'], $appRoutes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...