2012-06-25 1 views
0

젠드 양식에 대한 사용자 정의 뷰 스크립트를 만들었습니다. 이 양식에는 파일 요소가 있습니다. echo $this->element->elementname->renderViewHelper() 코드를 실행하면 파일 요소를 제외한 모든 요소에서 정상적으로 작동합니다. 내 사용자 지정 양식 viewscript에 Uncaught exception 'Zend_Form_Element_Exception' with message 'Decorator by name ViewHelper does not exist'젠드 (Zend) 사용자 정의 뷰 스크립트 (파일 요소 렌더링 없음)

<?php if($this->element->avatarimage->hasErrors()):?> 
     <div class="control-group error"> 
    <?php else: ?> 
     <div class="control-group"> 
    <?php endif;?> 
     <label for="avatarimage" class="control-label">Avatar Image</label> 
     <div class="controls"> 
      <?php echo $this->element->avatarimage->renderViewHelper();?> 
      <?php if($this->element->avatarimage->hasErrors()): 
        $messages = $this->element->avatarimage->getMessages(); 
        $messages = array_values($messages); 
        $message = $messages[0]; 
        echo '<span class="help-inline">'.$message.'</span>'; 
       endif; 
      ?>    
     </div> 
    </div> 

가 어떻게 내 파일 요소를 통합 할 수 있습니다 : 내 사용자 정의 viewscript 내에서 내 파일 요소에 다음 코드를 실행하면, 다음과 같은 오류가?

답변

0

는 다음과 같이하십시오 :

<?php echo $this->element->avatarimage;?> 
+0

이 세미는 내 문제를 해결합니다. 이 작업을 수행하면 avatarimage 요소 (dt 및 dd)에 첨부 된 추가 html 콘텐츠가 생성됩니다. 다른 모든 요소에서 renderViewHelper를 호출하면 입력 html 만 반환됩니다. – jkushner

+1

폼 클래스의 요소에서 데코레이터를 제거해야합니다. 예를 들어, $ element-> removeDecorator ('DtDdWrapper'); – dimirc

+0

다른 데코레이터를 제거 할 수도 있습니다 : $ element-> removeDecorator ('label') $ element-> removeDecorator ('htmlTag'); 데코레이터에 대한 자세한 내용은 http://framework.zend.com/manual/en/zend.form.standardDecorators.html – dimirc

3

이 확실히 작동합니다.

<? echo $this->element->avatarimage->renderFile(); ?> 
+0

신이 당신을 축복합니다. 그것은 내 시간을 많이 절약했다. –

+0

고마워요 .-) – naquiuddin

관련 문제