2010-08-12 129 views
1

我有一个基于this教程的登录portlet已启动并正在运行。它工作得很好,但是,如果登录表单出现错误,则错误消息显示在Portlet中,并且它们不是非常突出。使用Portlet呈现/重定向到另一个视图

该portlet如下:

class UserLogin extends Portlet 
{ 
    public $title='Login'; 

    protected function renderContent() 
    { 
     $form=new LoginForm; 
     if(isset($_POST['LoginForm'])) 
     { 
      $form->attributes=$_POST['LoginForm']; 
      if($form->validate()) 
       $this->controller->refresh(); 
     } 
     $this->render('userLogin',array('form'=>$form)); 
    } 
}

我宁愿任何错误导致登录尝试重定向到可以醒目地显示了错误的一个完整的登录表单,这将是清楚明了的用户出了一些错误。

东西线沿线的:

if($form->validate()) 
    $this->controller->refresh(); 
else     
    $this->render('login',array('form'=>$form)); 

的其他位不正确的,但是,我似乎是无法弄清楚如何做到这一点。

回答

1

你可以尝试使用类似

else 
{ 
    Yii::app()->user->setFlash('login', 'Login error'); 
    $this->controller->redirect(array('account/login')); 
} 

其中account/login是单独的登录页面的控制器/动作对。 CWebUser的Flash消息系统用于将错误消息传递到新的动作(参见Yii cookbook How to work with flash messages)。

+0

精美的作品。我只是通过Yii :: app() - > user-> setFlash('login',$ form);来传递整个表单。 – 2010-08-12 18:00:11

相关问题