2013-01-19 51 views
3

EDITEDCakePHP的錯誤消息位置

CakePHP的版本:2.2.4

當輸入驗證falis該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

EDITED

我.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> 
+0

你可以發佈你的ctp嗎?我猜你有2個輸入「名稱」和「公名」。 –

+0

@PitsanuSwangpheaw我編輯了我的帖子。 –

+0

作爲一般提示:在詢問CakePHP問題時,您必須確定您使用的CakePHP的版本。 – SaidbakR

回答

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

的 '複選框' 輸入類型應該已經輸入後把錯誤。

但到指定的順序,使用format鍵輸入的$options陣列:

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

只要改變這些數組元素的順序來匹配你所需要的。

+0

謝謝,但我不知道如何排列數組元素。此外,我想使用'inputDefaults',所以我的所有複選框都顯示正確。 –

+0

'inputDefaults'將應用於所有'input()'調用,而不僅僅是複選框。我不明白你訂購元素的問題嗎?你可以通過設置''before''>''--before - ',''after''''''之後的值來進行一些測試,這樣你就可以看到每個輸出中出現的位置。 – Costa

0
  1. 在下面了Syntex

    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]; 
    }