我正在使用 Yii2(基本)和 Angular 5 构建单页Web应用程序。我的后端是模块,而不是单独的Yii应用程序。
$config = [
... codes .....
'modules' => [
'backend' => [
'class' => 'app\modules\backend\Module',
'defaultRoute' => 'admin',
],
]
];
页面导航从角度侧以 #route (井号标签路径网址)进行管理,例如 [root_path] / web /#/ user / dashboard (对于前端)和 [root_path] / web / backend /#/ admin / dashboard (用于后端)。
因此,每当我导航到 [root_path] / web / backend 时,我都希望将网址自动重定向到 [root_path] / web / backend /#/ admin / dashboard 。为此,我尝试将后端模块的默认路由更改为:
$config = [
... codes .....
'modules' => [
'backend' => [
'class' => 'app\modules\backend\Module',
'defaultRoute' => \yii\helpers\Url::to(['/admin','#' => '/admin/dashboard']),
],
]
];
AND
$config = [
... codes .....
'modules' => [
'backend' => [
'class' => 'app\modules\backend\Module',
'defaultRoute' => \yii\helpers\Url::to(['/backend/admin/index','#' => '/admin/dashboard']),
],
]
];
有人可以指出我做错了什么吗? 谢谢。
答案 0 :(得分:1)
您不能在定义配置时使用Url::to()
。此时,应用程序尚未初始化,因此UrlManager
助手使用的Url
组件尚不存在。因此,您正在创建鸡蛋问题-您需要Application来初始化Application。
即使您可以使用它,尝试执行的操作也没有太大意义。 defaultRoute
与URL不同,它与重定向无关-向其中分配URL不会带来任何好处。
而且,#
之后的URL的一部分不会发送到服务器,因此您永远不会收到对URL /web/backend/#/admin/dashboard
的请求。从Yii的角度来看,用户是使用/web/backend/#/admin/dashboard
还是使用/web/backend/
都没有区别-用户将始终被视为/web/backend/
。
如果要进行此类重定向,则应使用JavaScript处理并在浏览器级别执行。