yii CActiveForm客户端验证不适用于某些字段

时间:2015-01-08 11:53:38

标签: php yii client-side-validation yii-cactiverecord

在我的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

“subject”和“message”是“Notification”模型的两个字段。在通知模型中,我已经定义了这条规则:

array('subject, message', 'required')

我的问题是“主题”作品的验证,但“消息”的验证不起作用! 提交表单后,“主题”的错误消息显示,但“消息”没有任何错误。任何人都可以帮我解决这个问题吗? 我使用Yii 1.1.15

2 个答案:

答案 0 :(得分:1)

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(); ?>

我认为你设置了enableAjaxValidation = true

答案 1 :(得分:0)

您的消息字段中是否存在HTML属性"id" => "message"的原因? Yii CActiveForm为每个字段生成特定的HTML ID:modelName_fieldName

您无需手动设置ID(例如您的主题字段;它没有id)。 Yii需要这些格式的id进行验证,获取/发布数据以及更多内容(作为client / js函数)。

删除邮件字段中的"id" => "message"并重新测试。