3

編集済み

CakePHP バージョン: 2.2.4

入力検証が失敗すると、CakePHP が生成するエラー メッセージが入力要素の後に配置されます

<div class="control-group">
    <label class="control-label">Name <span class="required-field">*</span></label>
        <div class="controls">
            <input name="data[User][name]" class="input-xlarge form-error" type="text" value="">
            <div class="error-message">This field cannot be left blank.</div>
            <input type="hidden" name="data[User][public_name]" id="UserPublicName_" value="0">
           <input type="checkbox" name="data[User][public_name]" class="span1" value="1">
        </div>
 </div>

しかし、次のように、チェックボックスの後に配置したいと思います。

<div class="control-group">
    <label class="control-label">Name <span class="required-field">*</span></label>
        <div class="controls">
           <input name="data[User][name]" class="input-xlarge form-error" type="text" value="">
           <input type="hidden" name="data[User][public_name]" id="UserPublicName_" value="0">
           <input type="checkbox" name="data[User][public_name]" class="span1" value="1">
           <div class="error-message">This field cannot be left blank.</div>
        </div>
 </div>

FormHelper::input()を読みましたが、どうすればよいかわかりません。を使用したいと思いますinputDefaults

編集済み

私の.ctp

<div class="control-group">
    <label class="control-label">Nanme <span class="required-field">*</span></label>
        <div class="controls">
            <?php
               echo $this->Form->input('name', array(
                   'type' => 'text', 'class' => 'input-xlarge'));
               echo $this->Form->checkbox('public_name', array('class' => 'span1'));
            ?>
        </div>
</div>
4

3 に答える 3

7

実際に解決しました。'error' => falseエラーメッセージを追加して、必要な場所に配置しました$this->Form->error()

私の.ctp

<div class="control-group">
  <label class="control-label">Nanme <span class="required-field">*</span></label>
    <div class="controls">
        <?php
           echo $this->Form->input('name', array(
               'type' => 'text', 'class' => 'input-xlarge', 'error' => false));
           echo $this->Form->checkbox('public_name', array('class' => 'span1'));
           echo $this->Form->error('User.name', null, array('class' => 'error-message'));
        ?>
    </div>
</div>
于 2013-01-19T17:33:43.317 に答える
2

「チェックボックス」入力タイプは、入力の後にすでにエラーを入れているはずです。

ただし、正確な順序を指定するにはformat、入力の$options配列でキーを使用します。

$this->Form->input('fieldname', 
    array('type'=>'checkbox',
          'format'=>array('before', 'input', 'between', 'label', 'after', 'error')
));

これらの配列要素の順序を必要なものに合わせて変更するだけです。

于 2013-01-19T07:22:37.580 に答える
0
  1. コントローラーで以下のシンテックスを使用します

     if($this->{$this->pageModel}->validates())
     {
        // your code....
     }
     else{
           // your errors 
        $errors = $this->{$this->pageModel}->validationErrors;
        $this->set('errors',$errors);
     }
    
  2. あなたのctpファイルで、エラーメッセージを表示したいコードの下に置きます

    if(isset($errors) && !empty($errors['fieldname']))
    { 
        echo $errors['fieldname'][0];
    }
    
于 2014-05-14T12:50:53.903 に答える