Yii - проверка на стороне клиента для 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)">×</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, и предполагаемое поле имеет тип "TEXT".
Любая помощь приветствуется. Спасибо
1 ответ
Удалить 'id'=>'feedback_content'
от $form->textarea()
, CActiveForm самостоятельно создаст идентификатор для поданной формы. Для вашего текстового поля идентификатор должен быть Feedback_content
не feedback_content
(С учетом регистра). Из-за этого может быть сообщение проверки не уведомляющее в представлении. Положил errorSummary
проверить валидацию
<?php echo $form->errorSummary($model); ?>