2013-01-19 2 views
3

EDITEDCakePHP의 오류 메시지 위치

CakePHP의 버전 : 2.2.4

입력 검증 CakePHP의 내 입력 요소 후에 위치 생성 오류 메시지 falis 때

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

하지만 내 체크 박스 뒤에 다음과 같이 입력하고 싶습니다.

나는 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> 
+0

ctp를 게시 할 수 있습니까? 나는 당신이 2 개의 입력 "name"과 "public_name"을 가지고 있다고 생각한다. –

+0

@ PitsanuSwangpheaw 내 게시물을 편집했습니다. –

+0

일반적인 힌트 : CakePHP 질문에 당신이 사용하는 CakePHP의 버전을 확인해야합니다. – SaidbakR

답변

7

사실 나는 그것을 해결했습니다. 나는 'error' => false를 추가했습니다 내가 $this->Form->error()

내 .ctp으로 원하는 오류 메시지가 위치하여 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> 
syntex

if($this->{$this->pageModel}->validates()) 
{ 
    // your code.... 
} 
else{ 
     // your errors 
    $errors = $this->{$this->pageModel}->validationErrors; 
    $this->set('errors',$errors); 
} 
  • 아래 컨트롤러 사용

  • 2

    '확인란'입력 타입은 이미 입력 한 후 오류를 넣어해야합니다. 정확한 순서를 지정할 수 있지만

    는, 입력의 $options 배열의 format 키를 사용

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

    그냥 당신이 필요 일치하는 배열 요소의 순서를 변경합니다.

    +0

    고마워,하지만 내가 뭘 모르겠 배열 요소를 주문하는 방법입니다. 또한 'inputDefaults'를 사용하여 모든 체크 박스가 올바르게 표시되도록하고 싶습니다. –

    +0

    'inputDefaults'는 확인란뿐 아니라 모든 input() 호출에 적용됩니다. 요소 주문과 관련하여 귀하의 문제를 이해하지 못합니까? ' 'before'=> '- before -', 'after'= ''--after - '등의 값을 설정하여 테스트를 수행 할 수 있으므로 각 출력이 어디에 표시되는지 확인할 수 있습니다. – Costa

    0
    1. 오류 메시지를 표시 할 코드 아래에 넣으십시오.

      if(isset($errors) && !empty($errors['fieldname'])) 
      { 
          echo $errors['fieldname'][0]; 
      }