我有一个登录 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 消息).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top