Php yii setflash在使用重定向时不工作
我有一个问题,我用yii框架设计我的网站,现在当用户注册时,我想显示注册成功和重定向到登录页面。不幸的是,它保持重定向到登录页面而不显示任何消息。下面是我的用户控制器代码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
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'):