yii2从自定义模块重定向到基本控制器

时间:2014-12-07 20:18:47

标签: redirect controller registration yii2

我使用dektrium用户注册表。 注册链接生成domain.com/user/register链接 但它不是基本用户模型,该模块位于vendor / dektrium文件夹中。 现在在基本控制器文件夹中,我有带有视图操作的UsersController。 完成注册后,我想启动UsersController的查看操作来查看用户页面。

这是注册模块代码

public function actionRegister()
    {
        if (!$this->module->enableRegistration) {
            throw new NotFoundHttpException;
        }

        $model = $this->module->manager->createRegistrationForm();

        if ($model->load(\Yii::$app->request->post()) && $model->register()) {
            return $this->redirect(array('users/'.$model->username));
        }

        return $this->render('register', [
            'model' => $model
        ]);
    }

正如您所见,我已将此代码放在那里

return $this->redirect(array('users/'.$model->username));

应该将用户带到domain.com/users/username的自己的页面。 但不幸的是,url正在以下列方式形成

domain.com/user/users/username

如何解决此问题并将用户定向到domain.com/users/username页?

1 个答案:

答案 0 :(得分:2)

在用户重定向前添加额外/。它应该是

return $this->redirect(array('/users/'.$model->username));

或者你应该以正确的方式创建网址,这是最好的方法,但我不知道你的规则设置方式,所以我无法帮助你。我只是猜测,但它应该是:

return $this->redirect(array('users/view, 'username' => $model->username));

通过这种方式,您使用的是网址管理器,而不仅仅是对网址进行硬编码。将来,如果您决定更改链接,将更容易(仅替换配置中的url行),而不是进入文件来更改它。