2014-12-07 105 views
1

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

这是注册模块代码

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。 但可惜的网址是通过以下方式

domain.com/user/users/username 

我怎样才能解决这个问题,并直接用户domain.com/users/username页成形?

回答

2

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

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

还是应该实际创建网址的正确方法,这将是做到这一点的最好办法,但我不知道你有你的规则设置方式,所以我不能帮你那里。我只是猜测这里,但它应该是:

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

这样你正在使用您的网址经理,不仅仅是硬编码的URL。将来,如果您决定更改链接,它将变得更加简单(只需替换配置中的url行),而不是通过文件进行更改。

+0

完美的作品,谢谢! – David 2014-12-08 04:53:05