代码之家  ›  专栏  ›  技术社区  ›  Castro Roy

管理中的Magento模块上载图像

  •  9
  • Castro Roy  · 技术社区  · 14 年前

    我正在开发一个既有前端又有后端的模块。到现在为止一切都还可以,但现在我想在后端上传图片。我不知道怎么开始,我所做的一切都让我头疼。

    谢谢

    2 回复  |  直到 7 年前
        1
  •  10
  •   Castro Roy    7 年前

    经过几天的研究,下面是一个简单易用的例子,说明如何在Magento中上载文件。 How to create an image or video uploader for the Magento Admin Panel

    基本上,我们需要增加 'enctype' => 'multipart/form-data' 我们的形式

    $form = new Varien_Data_Form(array(
            'id' => 'edit_form',
            'action' => $this->getUrl('*/*/save'),
            'method' => 'post',
            'enctype' => 'multipart/form-data'
        )
    );
    

    添加类型的字段 file 到我们的现场设置

    $fieldset->addField('fileinputname', 'file', array(
        'label'     => 'File label',
        'required'  => false,
        'name'      => 'fileinputname',
    ));
    

    把它保存在我们的控制器里

    if(isset($_FILES['fileinputname']['name']) and (file_exists($_FILES['fileinputname']['tmp_name']))) {
      try {
        $uploader = new Varien_File_Uploader('fileinputname');
        $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
    
        $uploader->setAllowRenameFiles(false);
    
        $path = Mage::getBaseDir('media') . DS ;
    
        $uploader->save($path, $_FILES['fileinputname']['name']);
    
        $data['fileinputname'] = $_FILES['fileinputname']['name'];
      }catch(Exception $e) {
    
      }
    }
    
        2
  •  7
  •   mattalxndr    14 年前

    这需要进入你的模块 etc/system.xml 文件:

    <?xml version="1.0"?>
    <config>
        <sections>
            <imagesection> <!-- Make up a section key (configuration sidebar) -->
                <!-- ... -->
                <groups>
                    <imagegroup> <!-- Make up a group key (the part you can expand/collapse) -->
                        <!-- ... -->
                        <fields>
                            <imagefield> <!-- Make up a field key -->
                                <label>Field Name</label>
                                <frontend_type>image</frontend_type>
                                <backend_model>adminhtml/system_config_backend_image</backend_model>
                                <upload_dir config="system/filesystem/media" scope_info="1">uploaddir</upload_dir> <!-- would upload into media/uploaddir -->
                                <base_url type="media" scope_info="1">uploaddir</base_url> <!-- same as previous line -->
                                <sort_order>10</sort_order>
                                <show_in_default>1</show_in_default>
                                <show_in_website>1</show_in_website>
                                <show_in_store>1</show_in_store>
                            </imagefield>