0

CakePHP2.0フォームヘルパーのエラー出力をカスタマイズしようとしています。現在、フォームは入力の下にエラーメッセージを表示し、「error」クラスを入力のラベルに適用します。

入力に対してエラーレポートを完全に無効にするか、エラークラスとメッセージを出力できることがわかりました。

以下のメッセージなしで 、エラークラスを問題のある入力のラベルに適用したいと思います。

フォームのエラーメッセージ出力をオフにするにはどうすればよいですか。ただし、問題のあるラベルにはエラークラスを適用しますか?

4

3 に答える 3

2

FormHelper::input()オプションがありformatます。それは

要素順序の書式テンプレート。配列にない要素は出力に含まれません。

デフォルトの入力形式の順序: array('before', 'label', 'before', 'input', 'after', 'error')

を省略して、デフォルトの形式を渡すことができます'error'

echo $this->Form->input(
    'some_field',
     array('format' => array('before', 'label', 'between', 'input', 'after'))
);

これにより、エラー メッセージのない入力マークアップが生成されるはずです。

これをフォームの複数の入力に適用する場合は、DRY のままにしておく必要があります。

$format = array('before', 'label', 'between', 'input', 'after');
echo $this->Form->input(
    'some_field',
     array('format' => $format)
);
echo $this->Form->input(
    'some_other_field',
     array('format' => $format)
);

フォーマットをasに渡すことで、フォームのすべての入力にデフォルトのフォーマットを設定することもできます。FormHelper::create()inputDefaults

$this->Form->create(
    'MyModel',
    array(
        'inputDefaults' => array(
            'format' => array('before', 'label', 'between', 'input', 'after')
        )
    )
);
于 2012-12-10T23:02:28.483 に答える
0

この一部を手動で行う必要があります。最初に検証をオフにし、フォーム ヘルパーのラベル生成をオフにします。

echo $this->Form->input('myfield', array('error' => false, 'label' => false));

次に、クラスを追加してラベルを作成し、検証が失敗した場合はエラー クラスを追加します。どの検証が失敗したかを調べるには、次のように invalidFields 配列を確認します。

$error = null;
if (isset($this->invalidFields['Model']['myfield'])) {
    $error = 'error';
}

echo $this->Form->label('myfield', 'My Field', array('class' => $error));
于 2012-12-10T22:40:29.737 に答える