업로드 요소가있는 양식을 만듭니다. 아래 코드로 파일 요소를 만들었습니다.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>
어떤 아이디어?
모든 코드를 확인한 결과 데코레이터를 제거하는 곳을 찾을 수없는 것 같습니다. 내가 생각할 수있는 유일한 것은 내 뷰 부분이 위에 포함 된 양식을 렌더링하는 데 사용되는 것일 수 있습니다. 단 하나의 세트가 있어도 데코레이터를 출력하지 않을 수도 있습니다. – jjmu15
루프에서 File 요소에 대해 var_dump ($ element-> getDecorators());를 실행하고 결과가 무엇인지 확인하십시오. 나는 그것이 무엇을 등록했는지 궁금하다. 요소를 만들 때, 기존의 것들을 모두 제거하고 File 데코레이터로 대체 할 수 있도록'-> addDecorator ('File')'을'-> setDecorator (array ('File'))'로 변경하고 싶을 수 있습니다. – drew010
나는 그것을 분류했다. 양식의 맨 아래에서 양식 요소 데코레이터를 설정했습니다. 이것을 사용하면 개별 요소에 설정 한 데코레이터를 오버 라이딩하는 것처럼 보였습니다. 나는 그것을 해결하기 위해 폼의 맨 아래에있는 일반 설정을 제거하고 각 요소에 필요한 데코레이터를 할당했습니다. – jjmu15