我已经启动并运行了一个基于this教程的登录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));
然而,其他位不正确,我似乎无法弄清楚如何实现它。
答案 0 :(得分: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)。