1

デフォルトのモデル検証で CakePHP を使用しています。エラー ケーキで、クラス「エラー」をコンテナ div に追加します。すごい!しかし、1 つのフォーム要素を除いてすべてが正しく入力されている場合はどうでしょうか。クラス「成功」を受け取るために正しい入力が必要です(そして、ユーザーにそれらがどれほど素晴らしいかを伝えるメッセージまたはアイコンかもしれません)。

ここに私のフォーム作成コードがあります:

echo $this->Form->create('User',
        array(
            'class' => 'form-horizontal',
            'inputDefaults' =>
            array(
                'format' => array('before', 'label', 'between', 'input', 'error', 'after'),
                'div' => array('class' => 'control-group'),
                'label' => array('class' => 'control-label'),
                'between' => 'div class="controls">',
                'after' => '/div>',
                'error' => array('attributes' => array('wrap' => 'span', 'class' => 'help-inline')),
                )
            )
        );
4

2 に答える 2

1

私がやったことは、にコピー/lib/Cake/View/HelperFormHelper.phpすることでした/app/View/Helper/FormHelper.php。次に、/app/View/Helper/FormHelper.php の 1028 行付近 (私のコピーでは、「input」関数の末尾) を次のように変更しました。

1028:
    if ($this->_introspectModel($modelKey, 'validates', $fieldKey)) {
         $divOptions = $this->addClass($divOptions, 'required');
    }
    if($this->request->is('post')) {
        if(!$this->isFieldError($modelKey.'.'.$fieldKey)) {
        // This is the important line.
        $divOptions = $this->addClass($divOptions, 'success');
        }
    }
    if (!isset($divOptions['tag'])) {
        $divOptions['tag'] = 'div';
    }
}//end input function

于 2012-10-02T14:26:12.393 に答える
0

それが最もクリーンな方法かどうかはわかりませんが、うまくいくでしょう。

ビューに次の行を追加して、リクエストが POST かどうかを確認します。クラス「control-group」を持つすべてのフィールドは、新しいスタイルを採用します。

if($this->request->is('post')){
    echo '<style type="text/css">div.control-group { background-color:#000; }</style>';
}

クラス 'error' を使用するフィールドに新しいスタイルを表示したくないので、CSS ファイルのスタイル ルールの後に !important を追加して、変更を取り消します。

例「style.css」:

error {
    background-color: none !important;
}
于 2012-09-18T15:35:31.123 に答える