В моем приложении 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')
моя проблема - валидация для "предметных" работ, но проверка на "сообщение" не работает! после отправки формы появляется сообщение об ошибке "subject", но "сообщение" не имеет ошибки. может ли кто-нибудь помочь мне решить эту проблему? Я использую Yii 1.1.15
Есть ли причина для атрибута HTML "id" => "message"
в вашем поле сообщения? Yii CActiveForm генерирует конкретный идентификатор HTML: modelName_fieldName
для каждого поля.
Вам не нужно устанавливать идентификатор вручную (например, поле темы, оно не имеет идентификатора). Yii нуждается в таком формате идентификаторов для валидации, получения/публикации данных и других вещей (как функции client/js).
Удалите "id" => "message"
в поле сообщения и повторите тест.
в 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(); ?>
я думаю, что u set enableAjaxValidation = true