在我的yii应用程序中,我有一个简单的表单,其中包含两个字段,如下所示:
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'message-form',
'enableClientValidation' => true,
//'enableAjaxValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => false,
'validateOnType' => false,
'errorCssClass' => 'has-error',
'successCssClass' => 'has-success',
)));
?>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<?php echo $form->labelEx($model, 'subject'); ?>
<?php echo $form->textField($model, 'subject', array('class' => 'form-control')); ?>
<?php echo $form->error($model, 'subject', array('class' => 'alert alert-danger')); ?>
</div>
<div class="col-md-5"></div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<?php echo $form->labelEx($model, 'message'); ?>
<?php echo $form->textField($model, 'message', array('class' => 'form-control', 'id'=>'message')); ?>
<?php echo $form->error($model, 'message', array('class' => 'alert alert-danger')); ?>
</div>
</div>
</div>
......
//remaining of code
"主题"和"消息"是"通知"模型的两个字段。 在通知模型中,我定义了以下规则:
array('subject, message', 'required')
我的问题是"主题"的验证有效,但"消息"的验证不起作用!提交表单后,会显示"主题"的错误消息,但"消息"没有任何错误。谁能帮我解决这个问题?我使用 Yii 1.1.15
在 http://www.yiiframework.com/doc/api/1.1/CActiveForm 中你可以看到示例
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'focus'=>array($model,'firstName'),
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'firstName'); ?>
<?php echo $form->textField($model,'firstName'); ?>
<?php echo $form->error($model,'firstName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'lastName'); ?>
<?php echo $form->textField($model,'lastName'); ?>
<?php echo $form->error($model,'lastName'); ?>
</div>
<?php $this->endWidget(); ?>
我认为你设置启用Ajax验证=真
是否有原因在您的消息字段中"id" => "message"
HTML 属性?Yii CActiveForm 为每个字段生成一个特定的 HTML id: modelName_fieldName
。
您不需要手动设置 id(就像您的主题字段一样;它没有 id)。Yii 需要这些格式的 id 来验证、获取/发布数据和更多的东西(作为客户端/js 函数)。
删除消息字段上的"id" => "message"
,然后再次测试。