2013-10-07 2 views
0

저는 Yii 프레임 워크가 처음이므로 로그인 양식 "Username cannot be blank"과 같이 유효성 검증 오류 메시지를 표시해야합니다. 이제 필드를 업데이트 한 텍스트 필드가 있고 유효성 검사 중에 메시지를 표시하려고합니다. 어떻게해야합니까?Yii의 텍스트 필드에 경고 메시지를 표시하는 방법

컨트롤러

public function actionUpdate($id) 
    { 
     $model = $this->loadModel($id); 

    // set the parameters for the bizRule 
    $params = array('GroupzSupport'=>$model); 
    // now check the bizrule for this user 
    if (!Yii::app()->user->checkAccess('updateSelf', $params) && 
     !Yii::app()->user->checkAccess('admin')) 
    { 
     throw new CHttpException(403, 'You are not authorized to perform this action'); 
    } 
     else 
    { 

     if(isset($_POST['GroupzSupport'])) 
     {       

      $password_current=$_POST['GroupzSupport']['password_current']; 
      $pass=$model->validatePassword($password_current); 

      $model->attributes=$_POST['GroupzSupport']; 
         if($pass==1) 
         { 
         $model->password = $model->hashPassword($_POST['GroupzSupport']['password_new']); 
      if($model->save()) 
       $this->redirect(array('/messageTemplate/admin')); 
         } 
         else {$errors="Incorrect Current password"; print '<span style="color:red"><b>'; 
print '</b><b>'.$errors; 
print '</b></span>';} 
     } 

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

보기

<div class="form"> 
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'password-recovery-reset-password-form', 
    'enableAjaxValidation'=>false, 
)); ?> 


    <div class="row"><?php 
     echo $form->labelEx($model,'username'); 
     echo $form->textField($model,'username',array('size'=>45,'maxlength'=>150)); 
     echo $form->error($model,'username'); 
    ?></div> 


<div class="row"> 
     <?php echo $form->labelEx($model,'current password'); ?> 
     <?php echo $form->passwordField($model,'password_current',array('size'=>30,'maxlength'=>30)); ?> 
     <?php echo $form->error($model,'password_current'); ?> 
    </div> 

     <div class="row"> 
     <?php echo $form->labelEx($model,'new password'); ?> 
     <?php echo $form->textField($model,'password_new',array('size'=>30,'maxlength'=>30)); ?> 
     <?php echo $form->error($model,'password_new'); ?> 
    </div> 

     <div class="row"> 
     <?php echo $form->labelEx($model,'confirm new password'); ?> 
     <?php echo $form->passwordField($model,'password_repeat',array('size'=>30,'maxlength'=>30)); ?> 
     <?php echo $form->error($model,'password_repeat'); ?> 
    </div> 


    <div class="row buttons"><?php 
     echo CHtml::submitButton('Reset Your Password'); 
     ?></div><?php 

$this->endWidget(); ?> 
</div> 

지금 현재 나는 상단을 표시하고 있습니다. enter image description here

로그인 페이지 에서처럼 텍스트 필드에 바로 표시하려고합니다. enter image description here 어떻게하면됩니까?

+0

원하는 것을 명확히 할 수 있습니까? 텍스트 필드의 오른쪽이나 텍스트 필드 안쪽에 오류를 표시 하시겠습니까? – deacs

+0

텍스트 필드에 오류가 표시되기를 원합니다. – user2770039

답변

1

리디렉션 전에 원하는 필드에 메시지를 추가하십시오. 모델 검사기에서

:

$ this-> addError ('FIELD_NAME' ". 메시지 오류");

또는 컨트롤러 행동 :

$ 모델 -> addError ('FIELD_NAME' ". 메시지 오류");

+0

'

\t \t labelEx($model,'current password'); ?> \t \t passwordField($model,'password_current',array('size'=>30,'maxlength'=>30)); ?> \t \t error($model,'password_current'); ?> addError('password_current', "Message error.");?> \t
' 이 작업을 수행했지만 예외가 발생했습니다. "addError"라는 메서드 또는 클로저가 없습니다. – user2770039

+0

수정 됨. 모델에서가 아니라 컨트롤러에서이 작업을 수행하고 있습니다. $ 모델을 –

+0

$로 바꾸십시오. 컨트롤러에서 동일한 작업을 수행했지만, 같은 오류가 발생합니다. – user2770039

관련 문제