2011-09-28 30 views
6

Tôi gặp sự cố, biểu mẫu Zend sau đây phát ra lỗi. Vấn đề là "tập tin" -element và sử dụng setElementDecorators.Tải lên tệp Zend và phần tử trang trí

class Products_AddForm extends Zend_Form 
{ 
    function init() { 

     // other form elements... 

     $uploadElement = new Zend_Form_Element_File('Excel'); 
     $uploadElement->setLabel('Excel'); 
     $this->addElement($uploadElement); 

     $this->setElementDecorators(array(
      'ViewHelper', 
      'Errors', 
      array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
      array('Label', array('tag' => 'th')), 
      array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
     )); 



    } 
} 

Điều này sẽ xảy ra lỗi.

(Warning: Exception caught by form: No file decorator found... unable to render file element Stack Trace: #0) 

Thêm $uploadElement->addDecorator('File'); ở cuối sau khi SetElementDecorators sẽ làm việc, nhưng điều này sẽ cung cấp cho tôi các yếu tố tập tin hai lần!

Có ai giúp được không?

TIA Matt

Trả lời

10

Yếu tố tập tin đòi hỏi trang trí riêng của nó - Zend_Form_Decorator_File.

$this->setElementDecorators(array(
     'File', 
     'Errors', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array('Label', array('tag' => 'th')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
)); 

[sửa]

Vừa nhận thấy rằng bạn cũng đang sử dụng các yếu tố hình thức khác.

Sau khi mã ban đầu của bạn, thêm:

$this->getElement('Excel')->setDecorators(
    array(
     'File', 
     'Errors', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array('Label', array('tag' => 'th')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
    ) 
); 

Bằng cách đó, ViewHelper được thêm vào tất cả các yếu tố khác, và cho File yếu tố tập tin của bạn được sử dụng để thay thế.

+0

Cảm ơn 4 sự giúp đỡ của bạn. Thêm ném này: Cảnh báo: Ngoại lệ bị bắt theo hình thức: Phương thức getMaxFileSize không tồn tại Stack Trace: # 0 – frgtv10

+0

Đã cập nhật câu trả lời của tôi :) –

+0

hoạt động. havnt nhận thấy điều này trong tài liệu của zend !? :/ CẢM ƠN! – frgtv10

Các vấn đề liên quan