2

次のように CactiveForm ウィジェットを使用する場合:

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

検証メッセージを受け取りますが、入力フィールド自体はtextfieldであり、クラスを取得しません。

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'=>
4

2 に答える 2

1

デフォルトのエラー クラスをアタッチするには、デフォルトの自動生成フォームと同じようにフォームの構造が必要です。次のようなものです。

<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>

編集:つまり、入力フィールドごとに必要です。これは、デフォルトのcssとjquery.activeform.jsinputContainerのデフォルトの実装がそうであるためです。この動作を変更するには、別の css ルールをデフォルトのform.cssファイルに追加するだけです。デフォルトでは、 内の div にのみエラーが追加されます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 */}

上記が機能せず、エラー クラスを入力要素に個別に割り当てたい場合は、エラー css クラスを入力に追加する必要があるCActiveForm のafterValidateおよびafterValidateAttributeコールバックを使用できます。また、css ルールも必要です。そのような入力に一致します:clientOptions

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

beforeValidate で行ったように、何らかの形式のクライアント検証を使用する場合はaddClass('error');、上記の css を配置して入力する必要があります。

于 2012-06-26T19:36:31.880 に答える
0

htmlOptions パラメータを使用して要素にクラスを適用できます。これにより、タグに属性を渡すことができます。例えば:

<? php echo $form->textField($model, 'name', array('class'=>'textFieldClass')); ?>
于 2012-06-26T17:36:34.560 に答える