Есть ли способ, чтобы Yii CActiveForm выделил поля ввода?

Когда мы используем виджет CactiveForm следующим образом:

<?php echo $form->labelEx($model,'name'); ?> <?php echo $form->textField($model,'name'); ?> <?php echo $form->error($model,'name'); ?> 

Мы получаем сообщения о проверке, но сами поля ввода – наше текстовое поле , не получаем никакого класса.

Я хочу, когда Yii проверяет, класс появляется в поле ввода, чтобы он мог отображать выделение.

CHtml::activeTextField действительно делает это:

 <?php echo CHtml::activeLabel($model,'name'); ?> <?php echo CHtml::activeTextField($model,'name') ?> 

Любой способ сделать это с помощью CActiveForm ?

Добавлено:

 $form=$this->beginWidget('CActiveForm', array( 'id'=>'event-form', 'enableClientValidation' => true, 'clientOptions'=> 

Для класса ошибки по умолчанию, который должен быть присоединен, вам необходимо иметь структуру вашей формы, поскольку она находится в автоматически созданных формах по умолчанию, примерно так:

 <div class="form"> <?php $form=$this->beginWidget('CActiveForm', array( ... )); ?> <div class="row"> <?php echo $form->labelEx($model,'name'); ?> <?php echo $form->textField($model,'name'); ?> <?php echo $form->error($model,'name'); ?> </div> ... </div> 

Изменить: это inputContainer для каждого поля ввода необходим inputContainer , потому что это как css по умолчанию и реализация jquery.activeform.js по умолчанию . Чтобы изменить это поведение, мы можем просто добавить другое правило css в файл form.css по умолчанию, который по умолчанию добавляет ошибки только в div.form внутри div.form .

 /* default css */ div.form div.error input, div.form div.error textarea, div.form div.error select, div.form input.error, div.form textarea.error, div.form select.error { background: #FEE; border-color: #C00; } 

Таким образом, вы можете изменить это по своему вкусу, но минимальный размер будет:

 div.error input, div.error textarea, div.error select {/* styles */} 

Выполнить вышеуказанное не работает, и вы хотите назначить класс ошибки для ввода элементов отдельно, тогда вы можете использовать afterValidate вызовы afterValidate и afterValidateAttribute клиентских приложений clientOptions , где вам нужно будет добавить класс ошибки css к вводу, а также css, чтобы соответствовать таким входам:

 input.error, textarea.error, select.error {/*styles*/} 

Если вы используете какую-либо форму проверки клиента, как вы это делали раньше, перед вами необходимо addClass('error'); к вашим входам, с вышеуказанным css на месте.

Вы можете применить класс к элементу, используя параметр htmlOptions, который позволяет передавать атрибуты тегу. например:

 <? php echo $form->textField($model, 'name', array('class'=>'textFieldClass')); ?>