2012-02-24 3 views
1

여기 Yii noob.레이아웃의 로그인 폼 YII

부분으로 렌더링되는 드롭 다운 로그인 양식을 만들었습니다. 사용자 자격 증명이 정확하고 원하는 곳으로 리디렉션되면 제대로 작동합니다. 그러나 양식 유효성 검사 또는 인증에 실패하면 로그인 메시지로 전달할 오류 메시지를 가져올 수 없습니다. 문제는 내 로그인 양식이 주 레이아웃에 있기 때문에 (언제든지 액세스 할 수 있기를 원함) 컨트롤러가 레이아웃에 깨끗한 방식으로 변수를 전달할 수 없다고 생각합니다. 그래서 여기

는 로그인 양식, 나는 참으로 enableAjaxValidation을 설정, 또한

public function actionLogin() 
     {      
       $form = new LoginForm; 
       if (isset($_POST['LoginForm'])) 
       { 
         $form->attributes=$_POST['LoginForm']; 

         //validate user input and redirect to user panel if valid 
         if($form->validate() && $form ->login()) 
         { 
           $success = "oui"; 
           $this->render('user_panel');  
         } 
         else 
         {            
           $success = $form->getError('login').$form->getError('password');               
           $this->render('index',array('success'=>$success)); 
           //here I can pass the error messages to the index view for example, but not to the login form in the main layout, how can I do this? 
         }                          
       }      
     } 

SiteController

내 로그인 작업입니다, 그 일을 어떻게하는지? 컨트롤러에 Ajax를 통해 양식에 직접 응답 할 수 있다고 말할 수 있습니까?

마지막 질문 하나 : 양식이 $ form-> errorSummary ($ model) & 모델을 새 LoginForm으로 표시해야합니다. 오류 요약을 표시하지 않는 이유는 무엇입니까? 관심

답변

1

에 대한

덕분에이 :

$success = $form->getError('login').$form->getError('password');               
$this->render('index',array('success'=>$success)); 

는해야합니다 양식은

<?php echo $form->error($model,'field'); ?> 

또는

처럼 여러 줄을 가져야한다

$this->render('login',array('model'=>$model)); 

<?php echo $form->errorSummary($model); ?> 

이 줄은 유효성 검사기에서 오류를 수신하고 표시하므로 오류가 발생해도 아무 것도 전달할 필요가 없습니다.

마지막으로 모범 사례의 경우 이름 지정 규칙이 분석에서 오류로 이어지고 오류 변수는 실제로 $ success라고합니다.

+0

내가 말한 것처럼 로그인 양식이 레이아웃에 있으므로 전달하는 오류가이 방식으로 작동하지 않는 것 같습니다. 실제로 'index'를 렌더링하는 대신 사용자가 로그인 한 모든 뷰를 rende해야합니다. – Arthur

+0

$ model이 새로운 LoginForm 권한으로되어 있습니까? – Arthur

관련 문제