Php yii setflash在使用重定向时不工作

Php yii setflash在使用重定向时不工作,php,twitter-bootstrap,yii,Php,Twitter Bootstrap,Yii,我有一个问题,我用yii框架设计我的网站,现在当用户注册时,我想显示注册成功和重定向到登录页面。不幸的是,它保持重定向到登录页面而不显示任何消息。下面是我的用户控制器代码 public function actionCreate() { $model=new User; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($mode

我有一个问题,我用yii框架设计我的网站,现在当用户注册时,我想显示注册成功和重定向到登录页面。不幸的是,它保持重定向到登录页面而不显示任何消息。下面是我的用户控制器代码

public function actionCreate()
{
    $model=new User;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['User']))
    {
        $model->attributes=$_POST['User'];
        if($model->save()) {
            $this->redirect(array('profile'));
            Yii::app()->user->setFlash('success', 'Registration successful. Please login');

        }

    }

    $this->render('create',array(
        'model'=>$model,
    ));
}
这是我登录的代码

public function actionProfile()
{
    $model=$this->loadModel(Yii::app()->user->id);
    unset($model->password);

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['User']))
    {
        $model->attributes=$_POST['User'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('update',array(
        'model'=>$model,
    ));
}   
这是我的访问标尺的代码

public function accessRules()
{
    return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
            'actions'=>array('register','create'),
            'users'=>array('*'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('profile', 'history', 'recommendation','view'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete','update','create','index'),
            'expression' => 'Yii::app()->user->isAdmin()'
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}
这是我的观点

public function actionView($id)
{
    $this->render('view',array(
        'model'=>$this->loadModel($id),
    ));
}
未经测试,但:

 if(isset($_POST['User']))
{
    $model->attributes=$_POST['User'];
    if($model->save()) {
        $this->redirect(array('profile'));
        Yii::app()->user->setFlash('success', 'Registration successful. Please login');

    }
应该是

 if(isset($_POST['User']))
{
    $model->attributes=$_POST['User'];
    if($model->save()) {
     Yii::app()->user->setFlash('success', 'Registration successful. Please login');
        $this->redirect(array('profile'));
您还需要在视图中检查flash消息以显示它
}我刚刚发现了我的错误:

与此相反:

Yii::app()->user->setFlash('success', 'Registration successful. Please login');
    $this->redirect(array('profile'));
我应该这样做:

Yii::app()->user->setFlash('success', 'Registration successful. Please login');
      $this->redirect(array('/site/login'));

同样的事情也发生了,结果是没有出现“如果”,因为它没有被实现,为什么不显示消息或重定向到另一个视图


简而言之,这可能是因为你没有满足条件

使用
return
,因为它停止了进程

return $this->redirect();

现在我能做的就是刷新我的页面,在我的yii setflash下面插入$this->refresh()。如果你们找到了解决方案,请告诉我……不,你们没有。正如我对您说过的,您需要在视图文件views/user/view.php中检查flash方法是否存在
Yii::app()->user->hasplash('success'):