如何在Yii中的文本字段上显示警告消息

如何在Yii中的文本字段上显示警告消息,yii,yii-components,Yii,Yii Components,我是Yii框架的新手,需要以登录形式显示验证错误消息“用户名不能为空”。现在,我有了一个文本字段,我在其中更新了字段,在验证期间,我希望显示一条消息。我该怎么做 控制器 public function actionUpdate($id) { $model = $this->loadModel($id); // set the parameters for the bizRule $params = array('GroupzSupport'=>

我是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,
        ));
    }
    }
公共功能操作更新($id)
{
$model=$this->loadModel($id);
//设置bizRule的参数
$params=array('GroupzSupport'=>$model);
//现在检查此用户的bizrule
如果(!Yii::app()->user->checkAccess('updateSelf',$params)&&
!Yii::app()->user->checkAccess('admin'))
{
抛出新的HttpException(403,‘您无权执行此操作’);
}
其他的
{
如果(isset($_POST['GroupzSupport']))
{                        
$password\u current=$\u POST['GroupzSupport']['password\u current'];
$pass=$model->validatePassword($password\u current);
$model->attributes=$\u POST['GroupzSupport'];
如果($pass==1)
{
$model->password=$model->hashPassword($\u POST['GroupzSupport']['password\u new']);
如果($model->save())
$this->redirect(数组('/messageTemplate/admin');
}
else{$errors=“当前密码不正确”打印“”;
打印“”。$错误;
打印“”;}
}
$this->render('update',数组(
'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>

现在,我正在顶部显示它。


我想在登录页面的文本字段上显示它。如何执行此操作?

在重定向之前,将消息添加到所需字段

在模型验证器中:

$this->addError('field_name',“Message error”)

或在控制器操作中:


$model->addError('field_name',“Message error”)

你能澄清你想要什么吗?您希望错误显示在文本字段的右侧、文本字段内部还是其他位置?我希望错误显示在文本字段
我这样做了,但我得到了一个异常-没有名为“addError”的方法或闭包。已编辑。您在控制器上执行此操作,而不是在模型中。将$this替换为$model请更新您的问题代码。o看看你现在怎么样。