2013-10-07 96 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

重定向之前,將消息添加到所需的字段。

在模型驗證:

$這 - > 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

編輯。你在控制器上這樣做,而不是在模型中。替換$ this for $型號 –

+0

我在控制器中做了同樣的事情,但我得到了相同的錯誤 – user2770039