我的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
,但它仍然将我重定向到主域。我该如何解决这个问题?
答案 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);