2011-03-31 36 views
2

我正在嘗試爲一個圖庫構建一個小部件,因爲我所看到的所有模塊都沒有真正做到我所追求的目標,小部件看起來像是一種前進的方式,可以讓最終用戶對佈局進行很好且簡單的控制。如何將文件上傳的magento窗體設置爲enctype =「multipart/form-data」?

所以到目前爲止,我跟着的Magento如何讓一個小部件教程:

http://www.magentocommerce.com/knowledge-base/entry/tutorial-creating-a-magento-widget-part-2/

這也使我建立了我所需要的文件,並有東西在後端的認可。

現在我可以通過下面的代碼添加圖片上傳字段,但是文件沒有上傳,這似乎是由於enctype =「multipart/form-data」在添加文件字段時未自動設置。

所以我環顧四周,似乎你可以添加一個輔助塊用於微形式

本地/ WebsiteDevelopment/GalleryWidget的/ etc/Widget.xml

<?xml version="1.0"?> 
<widgets> 
    <WebsiteDevelopment_GalleryWidget type="widgets/list" translate="name description" module="GalleryWidget"> 
     <name>Banner Gallery</name> 
     <description>Adds a full page width gallery</description> 
     <parameters> 
      <enabled_services> 
       <label>Enabled Services</label> 
       <visible>1</visible> 
       <required>1</required> 
       <type>multiselect</type> 
       <source_model>WebsiteDevelopment_GalleryWidget_Model_Services</source_model> 
      </enabled_services> 
      <helper_block> 
       <type>WebsiteDevelopment/GalleryWidget_Adminhtml_Edit_Form</type> 
      </helper_block> 
      <template translate="label"> 
       <label>Frontend Template</label> 
       <visible>1</visible> 
       <required>1</required> 
       <type>select</type> 
       <values> 
        <text translate="label"> 
         <value>GalleryWidget/view.phtml</value> 
         <label>Text Links</label> 
        </text> 
       </values> 
      </template> 
      <image> 
       <label>Image One</label> 
       <description>The first image for the banner</description> 
       <visible>1</visible> 
       <type>image</type> 
      </image> 
     </parameters> 
    </WebsiteDevelopment_GalleryWidget> 
</widgets> 

所以之後我加入我的助手塊進入上述xml的params部分,我在WebsiteDevelopment/GalleryWidget/Block/Adminhtml/Edit/Form.php創建了我的幫助器(我認爲它應該在哪裏,我仍然不確定塊是否必須位於特定結構中像這樣用於後端),然後添加以下代碼

WebsiteDevelopment/GalleryWidget /座/ Adminhtml /編輯/ form.php的

<?php 
class WebsiteDevelopment_GalleryWidget_Block_Adminhtml_Edit_Form extends Mage_Adminhtml_Block_Widget_Form 
{ 
    protected function _prepareForm() 
    { 
     $form = new Varien_Data_Form(array(
      'id' => 'edit_form', 
      'enctype' => 'multipart/form-data' 
     )); 

     $form->setUseContainer(true); 
     $this->setForm($form); 
     return parent::_prepareForm(); 
    } 
} 

明顯的形式將需要更多的一些屬性,充分工作,但我只是希望得到的形式,以便我能有些不同的屬性確保該塊已被應用。

因此,當我進入後端時,帶有幫助器的表單仍然沒有enctype,並且我不確定我的幫助器塊是否被加載,或者它是否被加載,以及它是否沒有效果。

我是以正確的方式處理這個問題嗎?

+0

如果你想創建一個具有相冊,並在多個頁面蔓延話,我不會用一個小部件的圖片庫。我只會使用一個小部件,如果您只想在1頁格式化很好的多頁圖像。 我會創建一個自定義模塊,它有一個數據庫表來存儲數據和控制器允許移動通過畫廊。我爲一個客戶端做了這個,並模仿了管理界面的類別,以允許創建相冊和圖像。 – 2011-12-14 22:27:40

回答

2

的形式應該被初始化這樣的:

protected function _prepareForm() 
{ 
    $form = new Varien_Data_Form(array(
            'id' => 'edit_form', 
            'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'),'store' => $this->getRequest()->getParam('store'))), 
            'method' => 'post', 
            'enctype' => 'multipart/form-data' 
           )); 
    $form->setUseContainer(true); 
    $this->setForm($form); 
    return parent::_prepareForm(); 
} 
相關問題