Визуализация / перенаправление в другое представление с помощью портлетов - PullRequest
1 голос
/ 12 августа 2010

У меня запущен портлет входа в систему, основанный на этом учебном пособии.Однако он работает нормально, если в форме входа в систему произошла ошибка, сообщения об ошибках отображаются в портлете и не очень заметны.

Далее следует портлет:

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 Ответ

1 голос
/ 12 августа 2010

Вы можете попробовать использовать что-то вроде

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

где account/login - пара контроллер / действие для отдельной страницы входа. Система флеш-сообщений CWebUser используется для доставки сообщения об ошибке в новое действие (см. Yii cookbook Как работать с флеш-сообщениями ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...