yii Проверка клиента CActiveForm не работает на каком-либо поле

В моем приложении 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» — это два поля модели «Уведомление». в модели уведомлений я определил это правило:

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

Моя проблема заключается в проверке работ «субъекта», но проверка «сообщения» не работает!
после отправки формы появляется сообщение об ошибке «subject», но «message» не содержит ошибок. Кто-нибудь может помочь мне решить эту проблему?
Я использую Yii 1.1.15

0

Решение

Есть ли причина для атрибута HTML "id" => "message" в поле вашего сообщения? Yii CActiveForm генерирует определенный HTML-идентификатор: modelName_fieldName для каждого поля.

Вам не нужно устанавливать идентификатор вручную (как ваше поле темы; у него нет идентификатора). Yii нужен этот формат идентификаторов для валидации, получения / публикации данных и других вещей (как функции client / js).

Удалить "id" => "message" в поле вашего сообщения и проверьте снова.

0

Другие решения

в 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