Визуализация / перенаправление на другой взгляд с помощью портлетов

StackOverflow https://stackoverflow.com/questions/3464009

  •  27-09-2019
  •  | 
  •  

Вопрос

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

Портлет следует:

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 Cooknbook Как работать с флэш-сообщениями).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top