使用Portlet渲染/重定向到另一个视图

时间:2010-08-12 01:06:52

标签: php yii portlet

我已经启动并运行了一个基于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));

然而,其他位不正确,我似乎无法弄清楚如何实现它。

1 个答案:

答案 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)。