0

我想在注册成功后重定向到另一个页面。我如何限制此页面直接从 url 访问。仅在注册后显示。

public function actionRegistration()
{
   .......
  if($model->save())
  {
    $this->redirect(Yii::app()->request->baseUrl.'/site/success_registration'); 
  }
  ............
} 

public function actionSuccess_registration()
{
   $this->render('success_registration');
}
4

4 回答 4

0

在 yii 中检查这个以进行身份​​验证。所以你可以这样做:

class YourController extends CController
{
    ......
    public function filters()
    {
        return array(
            'accessControl',
        );
    }

    public function accessRules()
    {
        return array(
            array('deny',
                'actions'=>array('registration'),
                'users'=>array('?'),
            ),
            array('allow',
                'actions'=>array('success_registration'),
                'users'=>array('@'),
            ),
            array('deny',
                'actions'=>array('delete'),
                'users'=>array('*'),
            ),
        );
    }
} 

在你的方法中

public function actionRegistration()
{
   .......
  if($model->save())
  {
    $this->redirect($this->createUrl('site/success_registration')); 
  }
  ............
} 
于 2013-07-11T03:04:17.743 回答
0

您可能可以添加一些规则和过滤器,或者您可以检查 actionSuccess_registration 中的引用者,但使视图无法从其他任何地方访问的最简单方法是从 actionRegistration 内部呈现 success_registration 视图。因此,如果 actionSuccess_registration 所做的只是渲染视图,那么它是多余的。

public function actionRegistration()
{
  .......
  if($model->save())
  {
    $this->render('success_registration');
    return;
  }
  ............
}
于 2013-07-11T01:18:33.977 回答
0

您应该转到项目文件并转到受保护的文件夹 -> 控制器文件夹,然后打开 SiteController.php 请在 SiteController.php 中找到“public action actionLogin()”。之后找到这一行:

$this->redirect(Yii::app()->user->returnUrl);

在 actionLogin() 函数中。

例如,我希望它重定向到用户控制器。我.'?r=user'在代码末尾添加。

$this->redirect(Yii::app()->user->returnUrl.'?r=user');

于 2014-09-27T09:16:57.440 回答
0

如果您改用闪存消息会更容易。这就是他们的目的。

public function actionRegister()
{
    if(Yii::app()->user->hasFlash('registered')) {
        $this->render('success_login');
    } else {
        // Process POST registration data here.
        // If registration was successul you do:
        Yii::app()->user->setFlash('registered',true);
        $this->refresh();

        // Otherwhise you render the registration form here
    }
}
于 2013-07-11T06:43:16.760 回答