2010-08-12 6 views
1

this 자습서를 기반으로 로그인 포틀릿을 만들고 실행했습니다. 그러나 로그인 양식에 오류가있는 경우 오류 메시지가 포틀릿 내에 표시되고 눈에 잘 띄지는 않습니다.포틀릿을 사용하여 다른보기로 렌더링/리다이렉트

포틀릿은 다음과 같습니다 내가 어떤 오류를 선호

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

당신은 account/login은 별도의 로그인 페이지에 대한 컨트롤러/액션 쌍

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

같은 것을 사용을 시도 할 수 있습니다. CWebUser 님의 플래시 메시지 시스템은 오류 메시지를 새로운 작업으로 전달하는 데 사용됩니다 (Yii 요리 책 How to work with flash messages 참조).

+0

아름답게 작동합니다. 나는 단순히 Yii :: app() -> user-> setFlash ('login', $ form);로 전체 양식을 전달했다. –

관련 문제