2012-05-29 4 views
0

업로드 요소가있는 양식을 만듭니다. 아래 코드로 파일 요소를 만들었습니다.Zend_Form_Element_File (데코레이터 오류 없음)

$image = new Zend_Form_Element_File('image'); 
$image->setAttrib('title','Listing Image:') 
     ->addDecorator('File') 
     ->addValidator('Size', false, 204800) 
     ->addValidator('Extension', false, 'jpg,png,gif'); 

    $this->addElement($image); 

내가 말할 수있는 한 잘 작동합니다. 페이지에 파일 요소를 추가하려고 시도합니다. "경고 : 파일 데코레이터를 찾을 수 없습니다 ... 파일 요소를 렌더링 할 수 없습니다 ..."라는 오류가 발생합니다.

필자는 요소에 대한 데코레이터를 파일 데코레이터로 설정했습니다. 왜이 오류가 발생하는지 확신 할 수 없습니까?

viewHelper 및 PrepareElements를 제외한 모든 기본 장식을 제거했으며 출력을 표시하기 위해 viewHelper로 뷰 partial을 사용하고 있습니다. 그냥 이것을 넣으려면 아래에 그 또한 포함되어 있어야합니다.

<form method="<?php echo $this->element->getMethod(); ?>" action="<?php echo $this->element->getAction(); ?>"> 
<div class="boxmiddle-Holder"> 
    <div class="boxmiddle-content"> 
     <table border="0" cellspacing="2" cellpadding="3" class="dataTable"> 
      <?php foreach($this->element->getElements() as $element): ?> 

         <!-- if not a button then display label --> 
         <tr> 
          <td><label for="<?php echo $element->getName(); ?>"><?php echo $element->getAttrib('title'); ?></label></td> 

         <td class="normal"><?php echo $element; ?></td> 
         <?php if($element->getMessages()) { 
          foreach($element->getMessages() as $message) { ?> 
           <td> <?php echo "<p class='elementError'>".$message."</p>"; ?></td> 
         <?php } 
         } 
         ?> 
         </tr> 
      <?php endforeach; ?> 
     </table> 
    </div> 
</div> 

어떤 아이디어?

답변

1

파일 장식자가 지우거나 재설정하지 않았는지 확인하기 위해 양식의 파일 요소에 Zend_Form_Decorator_File 데코레이터가 연결되어 있지 않음을 나타냅니다.

이 오류를 발생시키는 함수는줄 859 줄을보십시오. 어떻게 든 File 데코레이터가 요소에서 제거되고있는 것 같습니다. 데코레이터가 없거나 방금 File 데코레이터가 부족할 수 있습니다.

희망이 있습니다.

+0

모든 코드를 확인한 결과 데코레이터를 제거하는 곳을 찾을 수없는 것 같습니다. 내가 생각할 수있는 유일한 것은 내 뷰 부분이 위에 포함 된 양식을 렌더링하는 데 사용되는 것일 수 있습니다. 단 하나의 세트가 있어도 데코레이터를 출력하지 않을 수도 있습니다. – jjmu15

+0

루프에서 File 요소에 대해 var_dump ($ element-> getDecorators());를 실행하고 결과가 무엇인지 확인하십시오. 나는 그것이 무엇을 등록했는지 궁금하다. 요소를 만들 때, 기존의 것들을 모두 제거하고 File 데코레이터로 대체 할 수 있도록'-> addDecorator ('File')'을'-> setDecorator (array ('File'))'로 변경하고 싶을 수 있습니다. – drew010

+0

나는 그것을 분류했다. 양식의 맨 아래에서 양식 요소 데코레이터를 설정했습니다. 이것을 사용하면 개별 요소에 설정 한 데코레이터를 오버 라이딩하는 것처럼 보였습니다. 나는 그것을 해결하기 위해 폼의 맨 아래에있는 일반 설정을 제거하고 각 요소에 필요한 데코레이터를 할당했습니다. – jjmu15