客户端验证文本区域


Yii - Client Side Validation for Textarea

我是yii的新手,在客户端验证我的文本区时有麻烦。我不知道我做错了什么,但出于某种原因,客户端验证并不只适用于这个文本区域。

下面是我在模型中的规则:

public function rules()
{
    return array(
        array('content', 'required'),
        array('user_id, seen', 'numerical', 'integerOnly'=>true),
        array('datetime', 'safe'),
        array('id, user_id, content, datetime, seen', 'safe', 'on'=>'search'),
    );
}
下面是我视图中的代码:
<?php $form=$this->beginWidget('TbActiveForm', array(
        'id'=>'post-form',
        'action'=>Yii::app()->createUrl('/feedback/default/create'),
        'enableClientValidation'=>true,
        'clientOptions'=>array(
            'validateOnSubmit'=>true,
        ),
    )); ?>
    <div class="modal-header">
        <a class="close" id="close_modal" onclick="idEmpty(event)">&times;</a>
        <h4>New Feedback</h4>
    </div>
    <div class="modal-body">
        <?php echo $form->textarea($model,'content', array('id'=>'feedback_content','class'=>'feedback_textarea')); ?>
        <?php echo $form->error($model,'content'); ?>
    </div>
    <div class="modal-footer">
        <div class="hint" style="float:left">
            <span style="color:red;font-weight: bold">Hint: </span>You can use <?php echo CHtml::link('markdown', 'http://daringfireball.net/projects/markdown/syntax'); ?> syntax!
        </div>
        <?php echo TbHtml::submitButton('Send Feedback', array('color' => TbHtml::BUTTON_COLOR_SUCCESS)); ?>
    </div>
<?php 
    $this->endWidget();
?>

最后是我的控制器:

public function actionCreate()
{
    $model=new Feedback;
    if(isset($_POST['Feedback'])) {
        $model->attributes = $_POST['Feedback'];
        $model->user_id = Yii::app()->user->getId(); 
        $model->datetime = date("Y-m-d H:i:s");
        $model->seen = 0;
        if($model->validate()) {
            $model->save();
            $this->redirect(array('/dashboard'));
        }
        else
            echo 'cant validate';
    }
}

如果我试图违反这个文本区域的规则,比如如果我让它留空,我不会得到正确的错误消息,我最终得到"不能验证"(这只是为了测试目的)。我的数据库是mysql和预期的字段是类型"文本"。

任何帮助都是感激的。由于

'id'=>'feedback_content'$form->textarea()中移除。CActiveForm它自己会为表单文件创建ID。对于您的文本区域id应该是Feedback_content而不是feedback_content(区分大小写)。因为这可能是验证消息在视图中没有通知。输入errorSummary检查验证

 <?php echo $form->errorSummary($model); ?>