【问题标题】:Routing in module doesn't work Yii 2模块中的路由不起作用 Yii 2
【发布时间】:2017-03-16 05:41:43
【问题描述】:

我是 Yii 2 的新手,我的问题是关于模块内部的路由。 我的应用程序中有一个模块,它是用户和管理员的配置文件柜。我创建了一个 CabinetController 而不是 DefaultController,还创建了一个 AdminController 和 UserController。

我想要什么?我希望这个 CabinetController 收到请求,并在验证用户是否为管理员后将其转发给 AdminController 或 UserController。

在配置文件中,我将模块的默认路由设置为“cabinet”(据我所知,这是默认控制器的名称)。在 UrlManager 的“规则”部分,我写了以下内容:

'modules' => [
  'cabinet' => [
    'class' => 'app\modules\cabinet\Module',
    'defaultRoute' => 'cabinet'
  ],
  'utility' => [
    'class' => 'c006\utility\migration\Module',
  ],

],
'urlManager' => [
  'enablePrettyUrl' => true,
  'showScriptName' => false,

  'rules' => [
    '<_c:\w+>/' => '<_c>/',
    '<_c:[\w\-]+>/<_a:\w+>' => '<_c>/<_a>',
    '<_m:cabinet>/<_a:\w+>' => '<_a>',

  ],
],

如果我转到“my-site.com/cabinet”,它可以正常工作并打开“admin/index”,因为我已将此请求重定向到 AdminController/actionIndex,但是一旦我转到“my-site”之类的地方.com/cabinet/users”它以 404 NotFound 响应。我打开记录器并看到:exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "cabinet/desktop"

这是我的 CabinetController 以及我将请求转发给 Admin/UserController 的方式:

public function init()
{
  parent::init();
  $this->user = $this->findModel();
  $this->controllerToUse = $this->user->isAdmin() ? 'admin' : 'user';
}

public function actionIndex()
{
  return $this->module->runAction($this->controllerToUse . '/' . $this->action->id);
}

如果我在 CabinetController 中更改 defaultAction,它会按预期正常运行此操作。或者,如果我再次访问“my-site.com/cabinet/admin/users”,效果很好,因为它在 url 中找到了一个控制器(我认为)。

【问题讨论】:

    标签: yii yii2 yii2-module


    【解决方案1】:

    Yii2 中的路由可能有点棘手,它遵循一些你需要了解的规则,可以找到 here

    但如果我理解正确Admin/UserController 是Cabinet 模块的一部分?你想让 Yii 将/cabinet/users 路由到/cabinet/admin/users

    您需要在 UrlManager 中添加一些规则,请参阅 Rules

    例子:

    'rules' => [
        '<module:cabinet>/<action:\w+>' => '<module>/admin/<action>',
    ],
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多