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