4

したがって、モデルのバリデーターに対して検証すると、CakePHP が自動的にエラー メッセージをビューにロードすることを理解しています。日付ドロップボックス検証をセットアップしようとしていますが、エラー メッセージが表示される場所を制御したいと考えています。

フォームを検証するために送信する前に:

<div class="input text required">
<label for="UserEmail">Email</label>
<input name="data[User][email]" maxlength="50" type="text" id="UserEmail">
</div>

検証後、エラーがここに表示されます。

<div class="input text required error">
<label for="UserEmail">Email</label>
<input name="data[User][email]" maxlength="50" type="text" value="" id="UserEmail" class="form-error">
<div class="error-message">An email is required</div>
</div>

ここに表示できる場所で制御することはできますか?

<div class="input text required error">
<div class="error-message">An email is required</div>
<label for="UserEmail">Email</label>
<input name="data[User][email]" maxlength="50" type="text" value="" id="UserEmail" class="form-error">
</div>

またはここ:

<div class="error-message">An email is required</div>
<div class="input text required error">
<label for="UserEmail">Email</label>
<input name="data[User][email]" maxlength="50" type="text" value="" id="UserEmail" class="form-error">
</div>
4

2 に答える 2

5

ビューで:

1) 自動エラー表示を無効にします。

echo $this->Form->create('Mymodel', array(
    'inputDefaults' => array(
        'error' => false
    )
));

2) から現在のフォーム エラーを取得します。$this->validationErrors

3) $this->Form->error()を介して、独自のマークアップまたは Cake のデフォルトのマークアップを使用して、好きな場所にそれらを表示します。

更新: 元の質問を誤解しました。要素の順序は、 create() 呼び出し (すべてのフィールドに適用) または input() 呼び出し (個々のフィールド) のいずれかで指定できます。

echo $this->Form->create('Mymodel', array(
    'inputDefaults' => array(
        'format' => array('before', 'error', 'label', 'between', 'input', 'after')
    )
));

上記はerrordivの前にlabeldivを配置します。その配列は、好きな順序で並べ替えることができます。

于 2012-04-16T01:43:11.817 に答える
0

password_confirmフィールドでこれを取得できました。

         echo $this->Form->input('username');
        echo $this->Form->input('password');

        echo $this->Form->input('password_confirm', array(
            'type' => 'password',
            'div'=>'control-group',
            'error' => array('attributes' => array('wrap' => 'div','class' => 'help-inline'))
        ));

        echo $this->Form->input('group_id', array(
            'options' => array('2' => 'Admin', '3' => 'Publisher')
        )); 
        echo $this->Form->input('publisher_id', array(
            'options' => $publishers
        ));

        echo $this->Form->input('active');
于 2012-07-30T19:51:53.377 に答える