В моем приложении 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
Есть ли причина для атрибута 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(); ?>
я думаю, что вы установите enableAjaxValidation = true