题
我有一个登录 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));
然而,其他位不正确,我似乎不知道如何实现它。
解决方案
你可以尝试使用类似的东西
else
{
Yii::app()->user->setFlash('login', 'Login error');
$this->controller->redirect(array('account/login'));
}
在哪里 account/login
是单独登录页面的控制器/操作对。 CWebUser
的 flash 消息系统用于将错误消息传递到新的操作中(参见 Yii Cookbook 如何使用 Flash 消息).
不隶属于 StackOverflow