2013-08-06 18 views
1

希望你能幫上忙。Magento image upoad文件名不保存在數據庫中

我是相當新的PHP,但想學得很快。

我試圖附加圖片上傳字段添加到庫擴展。下面是擴展控制器的代碼。我已經爲名爲galpic_popup_image的數據庫添加了一個額外的列,其值與現有的galpic_image列相同。

我設法讓上傳工作,因此圖像會保存在服務器上,但它是不保存在數據庫中的文件名,所以我不能把它的前端。

任何幫助,將不勝感激

class ParadoxLabs_Gallery_Adminhtml_GalleryController extends Mage_Adminhtml_Controller_Action 
{ 
    public function indexAction() 
    { 
     $this->loadLayout(); 
     $this->_setActiveMenu('cms/gallery'); 
     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Gallery'), Mage::helper('adminhtml')->__('Gallery')); 

     $this->renderLayout(); 
    } 

    public function editAction() 
    { 
     $this->loadLayout(); 
     $this->_setActiveMenu('cms/gallery'); 
     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Gallery'), Mage::helper('adminhtml')->__('Gallery')); 

     $this->_addContent($this->getLayout()->createBlock('gallery/adminhtml_gallery_edit')); 
     $this->renderLayout(); 
    } 

    public function newAction() 
    { 
     $this->editAction(); 
    } 

    public function saveAction() 
    { 
     if ($this->getRequest()->getPost()) { 
      // Image uploading code modified from http://is.gd/gS8p3 
      if(isset($_FILES['image']['name']) && (file_exists($_FILES['image']['tmp_name']))) 
      { 
       try{ 
        $uploader = new Varien_File_Uploader('image'); 
        $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); 
        $uploader->setAllowRenameFiles(false); 
        $uploader->setFilesDispersion(false); 
        $path = Mage::getBaseDir('media') . DS . 'p_gallery' . DS ; 
        $uploader->save($path, $_FILES['image']['name']); 
        $data['image'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'p_gallery/'. $_FILES['image']['name']; 
       }catch(Exception $e){} 
      } 
      else 
      { 
       if(isset($data['fileinputname']['delete']) && $data['fileinputname']['delete'] == 1){     
        $data['image_main'] = ''; 
       } 
       else{ 
        unset($data['image']); 
       } 
      } 

      if(isset($_FILES['popup_image']['name']) && (file_exists($_FILES['popup_image']['tmp_name']))) 
      { 
       try{ 
        $uploader = new Varien_File_Uploader('popup_image'); 
        $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); 
        $uploader->setAllowRenameFiles(false); 
        $uploader->setFilesDispersion(false); 
        $path = Mage::getBaseDir('media') . DS . 'p_gallery' . DS ; 
        $uploader->save($path, $_FILES['popup_image']['name']); 
        $popupdata['popup_image'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'p_gallery/'. $_FILES['popup_image']['name']; 
       }catch(Exception $e){} 
      } 
      else 
      { 
       if(isset($popupdata['fileinputname']['delete']) && $popupdata['fileinputname']['delete'] == 1){     
        $popupdata['popup_image_main'] = ''; 
       } 
       else{ 
        unset($popupdata['popup_image']); 
       } 
      } 

      try { 
       if(intval($this->getRequest()->getParam('id')) == 0) { // New 
        $model = Mage::getModel('gallery/gallery') 
         ->setGalpicId ($this->getRequest()->getParam('id') ) 
         ->setGalpicStore($this->getRequest()->getParam('store')) 
         ->setGalpicDate (date('Y-m-d', time())) 
         ->setGalpicName ($this->getRequest()->getParam('name') ) 
         ->setGalpicImage($data['image']      ) 
         ->setGalpicPopupImage($popupdata['popup_image']      ) 
         ->save(); 
       } 
       else { // Edit 
        $model = Mage::getModel('gallery/gallery') 
         ->setGalpicId ($this->getRequest()->getParam('id') ) 
         ->setGalpicStore($this->getRequest()->getParam('store')) 
         ->setGalpicName ($this->getRequest()->getParam('name') ) 
         ->setGalpicImage($data['image']      ) 
         ->setGalpicPopupImage($popupdata['popup_image']      ) 
         ->save(); 
       } 

       Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Galpic was successfully saved')); 

       $this->_redirect('*/*/'); 
       return; 
      } catch (Exception $e) { 
       Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
       $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
       return; 
      } 
     } 
     $this->_redirect('*/*/'); 
    } 

    public function deleteAction() 
    { 
     if($this->getRequest()->getParam('id') > 0) { 
      try { 
       $model = Mage::getModel('gallery/gallery'); 
       $model->setGalpicId($this->getRequest()->getParam('id')) 
        ->delete(); 
       Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Galpic was successfully deleted')); 
       $this->_redirect('*/*/'); 
      } catch (Exception $e) { 
       Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
       $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
      } 
     } 
     $this->_redirect('*/*/'); 
    } 

    protected function _isAllowed() 
    { 
     return Mage::getSingleton('admin/session')->isAllowed('cms/gallery'); 
    } 
} 

這裏是用來捕獲數據的形式:

class ParadoxLabs_Gallery_Block_Adminhtml_Gallery_Edit_Form extends Mage_Adminhtml_Block_Widget_Form 
{ 
    protected function _prepareLayout() 
    { 
     parent::_prepareLayout(); 
     if (Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) { 
      $this->getLayout()->getBlock('head')->setCanLoadTinyMce(true); 
     } 
    } 

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

     $fieldset = $form->addFieldset('gallery_form', array(
      'legend'  => Mage::helper('gallery')->__('Galpic'), 
      'class'  => 'fieldset-wide' 
     ) 
     ); 

     $fieldset->addField('galpic_name', 'text', array(
      'name'  => 'name', 
      'label'  => Mage::helper('gallery')->__('Name'), 
      'class'  => 'required-entry', 
      'required' => true, 
     )); 

     $fieldset->addField('galpic_image', 'image', array(
      'name'  => 'image', 
      'label'  => Mage::helper('gallery')->__('Image'), 
      'class'  => 'required-entry', 
      'required' => true, 
     )); 
     $fieldset->addField('galpic_popup_image', 'image', array(
      'name'  => 'popup_image', 
      'label'  => Mage::helper('gallery')->__('Popup Image'), 
      'class'  => 'required-entry', 
      'required' => true, 
     )); 

     $fieldset->addField('galpic_store', 'select', array(
      'name'  => 'store', 
      'label'  => Mage::helper('core')->__('Store View'), 
      'title'  => Mage::helper('core')->__('Store View'), 
      'required' => true, 
      'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true), 
     )); 

     if (Mage::registry('gallery')) { 
      $form->setValues(Mage::registry('gallery')->getData()); 
     } 

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

一個問題,我看到的是,$數據不聲明。在您的代碼所基於的wiki中,$ data被聲明爲if語句中的內容:if($ data = $ this→getRequest()→getPost())。如果你這樣做,那麼你的變量$ popupdata是多餘的,因爲popup_image的值將被包含在$ data ['popup_image']中,並且刪除圖像選項將起作用。但是,上述內容並沒有解釋爲什麼彈出式圖像沒有保存在數據庫中,沒有代碼拋出錯誤。 – kiatng

+0

謝謝Kiatng,我會檢查一下。我仍然不明白爲什麼圖像url沒有保存在數據庫中。正如你所說,根本沒有錯誤,但看到我是新來的PHP我可能會錯過簡單的東西:/ – VeryGeek

回答

1

好吧,我定了!

有人建議,以確保列在同一個數量級控制器可以節省的項目,所以我做到了。它似乎沒有效果(但它可能已經完成)。

我改變了第二圖像上傳代碼如下(從$ popupdata作爲Kiatng建議基本解除「彈出」)以上:

if(isset($_FILES['popup_image']['name']) && (file_exists($_FILES['popup_image']['tmp_name']))) 
      { 
       try{ 
        $uploader = new Varien_File_Uploader('popup_image'); 
        $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); 
        $uploader->setAllowRenameFiles(false); 
        $uploader->setFilesDispersion(false); 
        $path = Mage::getBaseDir('media') . DS . 'p_gallery' . DS ; 
        $uploader->save($path, $_FILES['popup_image']['name']); 
        $data['popup_image'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'p_gallery/'. $_FILES['popup_image']['name']; 
       }catch(Exception $e){} 
      } 
      else 
      { 
       if(isset($data['fileinputname']['delete']) && $data['fileinputname']['delete'] == 1){     
        $data['image_main'] = ''; 
       } 
       else{ 
        unset($data['popup_image']); 
       } 
      } 
相關問題