【问题标题】:How to set hashUrl to module's defaultRoute in Yii2 / Angular如何在 Yii2 / Angular 中将哈希 URL 设置为模块默认路由
【发布时间】:2018-08-04 23:30:14
【问题描述】:

我正在使用 Yii2(basic)Angular 5 构建单页 Web 应用程序。我的后端是一个模块,而不是一个单独的 Yii 应用程序。

$config = [
     ... codes .....
     'modules' => [
         'backend' => [
             'class' => 'app\modules\backend\Module',
             'defaultRoute' => 'admin',
         ],
     ]
];

页面导航从角度管理为 #route(主题标签路由 url),如 [root_path]/web/#/user/dashboard(用于前端)和[root_path]/web/backend/#/admin/dashboard(用于后端)。

所以,每当我导航到 [root_path]/web/backend 时,我想自动将 url 重定向到 [root_path]/web/backend/#/admin/dashboard强>。为此,我尝试将后端模块的默认路由更改为:

    $config = [
     ... codes .....
     'modules' => [
         'backend' => [
             'class' => 'app\modules\backend\Module',
             'defaultRoute' => \yii\helpers\Url::to(['/admin','#' => '/admin/dashboard']),
         ],
     ]
];

    $config = [
     ... codes .....
     'modules' => [
         'backend' => [
             'class' => 'app\modules\backend\Module',
             'defaultRoute' => \yii\helpers\Url::to(['/backend/admin/index','#' => '/admin/dashboard']),
         ],
     ]
];

但是我收到了这个错误:

谁能指出我做错了什么? 提前谢谢。

【问题讨论】:

    标签: angularjs yii yii2 yii2-basic-app


    【解决方案1】:

    您不能在定义配置时使用Url::to()。此时应用程序尚未初始化,因此UrlManager 组件(由Url 助手使用)不存在。所以你正在创建鸡蛋问题 - 你需要应用程序来初始化应用程序。

    即使您可以使用它,您尝试做的事情也没有多大意义。 defaultRoute 与 URL 不同,它与重定向无关 - 将 URL 分配给它不会带来任何好处。 此外,# 之后的部分 URL 不会发送到服务器,因此您永远不会收到对 URL /web/backend/#/admin/dashboard 的请求。从 Yii 的角度来看,用户是在 /web/backend/#/admin/dashboard 还是 /web/backend/ 上没有区别 - 它总是被视为 /web/backend/

    如果你想要这样的重定向,你应该在 JavaScript 中处理它并在浏览器级别执行。

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2016-01-31
      • 2018-01-14
      • 2014-12-13
      • 1970-01-01
      相关资源
      最近更新 更多