Laravel子域路由问题

时间:2018-04-24 11:30:07

标签: laravel

我的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: 

在我的导航中,我正在调用route()函数。如何更改此选项以便子域名可以使用?

修改

当我手动输入网址到地址栏时,它可以正常工作。但当我将鼠标悬停在我的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 :(得分:0)

尝试将您的子域路由放置在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);