如何在Yii2 / Angular中将hashUrl设置为模块的defaultRoute

时间:2018-08-02 06:40:26

标签: angularjs yii yii2 yii2-basic-app

我正在使用 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']),
         ],
     ]
];

但是我得到了这个错误: enter image description here

有人可以指出我做错了什么吗? 谢谢。

1 个答案:

答案 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处理并在浏览器级别执行。