1

「特別」なお願いがあります。数日前にCakePHP 2.2.4を使い始めましたが、今は Form Helper を使っていくつかの小さなフォームを開発しています。

フォーム ヘルパーがエラーを自動的に管理することはわかりましたが (すばらしい!)、カスタマイズする必要はほとんどありません。エラーのクラス (エラー メッセージ) を変更して、たとえばspandiv.

ただし、エラーが発生した場合は入力のクラスを変更する必要があります。

<?php

echo $this->Form->input('User.email', array(
                                    'label' => array(                                                                       
                                        'class' => 'name-form',
                                        'text'  => 'Email:'
                                    ),                                                              
                                    'div'   => 'field', 
                                    'class' => 'input-xlarge'
                                )
                       );

?>

ご覧のとおり、私が使用するクラスの名前はinput-xlargeです

エラーがある場合は、そのクラスを変更する必要があります。新しいクラスは、input-xlarge-error である必要があります。

このクラスは、入力テキストの境界線のみをredに設定して変更します。

これは可能ですか?

ありがとうございました!

4

3 に答える 3

2

エラーが発生した場合、入力のクラスを変更する必要があるのはなぜですか?

外側の div に追加されたクラスを使用して、入力をターゲットにすることができます。

例えば

div.error input { }

エラーが発生した場合は、入力のスタイルを変更できます。

ビューで必要なのは次のとおりです。

<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('email'); ?>
<?php echo $this->Form->end('Submit'); ?>

これにより、簡単な例が得られるはずです。フォームを送信し、要素を調べて、エラー クラスが追加された場所を確認します。

あなたはおそらく逃げることができます:

.error input { border: red; }

CSSで

于 2013-01-02T18:12:12.903 に答える
2

できることは、独自の FormHelper クラスを作成し、addClass() メソッドをオーバーライドすることです。

class BootstrapFormHelper extends FormHelper {
    public function addClass($options = array(), $class = null, $key = 'class') {
        if ($class === 'error') {
            $class .= ' has-error';
        }
        return parent::addClass($options, $class, $key);
    }
}
于 2014-02-18T22:11:10.480 に答える
1

あなたの質問の論理について考えてみてください。

「エラーが発生した場合は、div のクラスを x、それ以外の場合は y にします」。

これを達成するにはいくつかの方法があります。エラーに基づいてクラスを反転するだけでFormHelper::isFieldError十分な場合は...

<?php
echo $this->Form->input('User.email', array(
         'label' => array(                                                                       
             'class' => 'name-form',
             'text'  => 'Email:'
          ),                                                              
          'div'   => 'field', 
          'class' => $this->Form->isFieldError('User.email') ? 'input-xlarge-error' : 'input-xlarge'
));
?>

上記は、「フォームエラー」クラスが入力に追加されるのを止めません。(その解決策は質問の範囲外です)

この質問に答えた理由は、ブートストラップ 3 で希望どおりに動作するように、入力にエラー クラスを具体的に設定する必要があったためです。これは、エラー時に入力クラスがワイプされるのにも役立ちます。FormHelper::input()また、以下にリンクしている利用可能なオプションを確認することもできます。エラーをより複雑に制御するには、FormHelper::Errorさらに堅牢な があります。これはすべて CakePHP Web サイトで見つけることができます。

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html

于 2013-12-29T01:42:03.873 に答える