2012-04-15 30 views
4

所以我明白,如果您使用Model的驗證器驗證它,CakePHP會自動將錯誤消息加載到視圖中。我正在嘗試設置日期Dropbox驗證,並且我想控制錯誤消息顯示的位置。如何控制在CakePHP表單中顯示錯誤消息div的位置?

提交驗證表單前:

<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> 

回答

5

視圖:

1)禁用自動錯誤顯示:

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

2)$this->validationErrors

獲取當前表單錯誤

3)通過$this->Form->error()

更新: 我誤解了您的原始問題,您可以使用自己的標記或Cake的默認標記顯示它們。的元素的順序可以通過指定任一創建()調用(適用於所有字段)或輸入()調用(用於單個字段):

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

上面將放置error DIV之前label股利。您可以按照您喜歡的任何順序重新排列該陣列。

+0

謝謝,但我想利用CakePHP的錯誤股利。它將錯誤類添加到圍繞輸入的div中。我怎樣才能利用它呢? – Strawberry 2012-04-16 21:31:18

+2

'echo $ this-> Form-> error('email');'看看我發佈的使用選項鍊接。 – Costa 2012-04-17 01:56:41

+0

我的意思是這行''div class =「input text required error」>' – Strawberry 2012-04-17 06:48:13

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'); 
相關問題