>当我们像这样使用CactiveForm Widget时:
<?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
,因为这就是jquery.activeform.js的默认css和默认实现的方式。要更改此行为,我们可以简单地将另一个 css 规则添加到默认表单.css文件中,默认情况下,该文件仅将错误添加到 div.form
中的 div 中。
/*
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 */}
如果上述方法不起作用,并且您想单独为输入元素分配错误类,那么您可以使用 CActiveForm 的 clientOptions
的afterValidate
和afterValidateAttribute
回调,您需要将错误 css 类添加到输入中,并且还有一个 css 规则来匹配此类输入:
input.error, textarea.error, select.error {/*styles*/}
如果您使用某种形式的客户端验证,就像您在 beforeValidate 中所做的那样,您需要addClass('error');
输入,并使用上述 css。
您可以使用 htmlOptions 参数将类应用于元素,该参数允许您将属性传递给标记。 例如:
<? php echo $form->textField($model, 'name', array('class'=>'textFieldClass')); ?>