2015-11-26 1 views
0

Просто продолжение моего исследования о Magento Admin Grid. Я пытаюсь создать загрузку файлов, и я успешно сделал это. Однако у меня возникла проблема с обновлением и удалением поля формы загрузки файла. Другие поля формы ввода заполняются данными и могут быть обновлены и удалены из записей.Загрузка файла Magento не удаляет или не обновляет загруженный файл

Проблема:

При попытке обновить записи, поле загрузки файла не отображающие имя загруженного файла, и при попытке обновить его, старый загруженный файл не был удален, но файл путь был обновлен в записях.

При попытке удалить записи загруженный файл не был удален, но удален в записи.

У меня также есть незначительная проблема относительно сетки. Сетка не отображает идентификатор записей и другого целого числа или числа, даже если они были объявлены в сетке.

Вопрос:

Что я упускаю в моем обновлении полей формы и сетки?

Вот образец полей формы.

$fieldset->addField('title', 'text', array(
     'label' => Mage::helper('pmadmin')->__('Matrix Title'), 
     'class' => 'required-entry', 
     'required' => true, 
     'name' => 'title', 
    )); 

    $fieldset->addField('file_path', 'file', array(
     'label' => Mage::helper('pmadmin')->__('File'), 
     'value' => '', 
     'class' => 'required-entry', 
     'required' => true, 
     'disabled' => false, 
     'readonly' => true, 
     'name' => 'file_path', 

     )); 

    $fieldset->addField('short_description', 'text', array(
     'label' => Mage::helper('pmadmin')->__('Short Description'), 
     'class' => 'required-entry', 
     'required' => true, 
     'name' => 'short_description', 
    )); 

Вот мой контроллер

public function editAction() 
{ 
    $pmadminId  = $this->getRequest()->getParam('id'); 
    $pmadminModel = Mage::getModel('pmadmin/pmadmin')->load($pmadminId); 

    if ($pmadminModel->getId() || $pmadminId == 0) { 

     Mage::register('pmadmin_data', $pmadminModel); 

     $this->loadLayout(); 
     $this->_setActiveMenu('pmadmin/items'); 

     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager')); 
     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News')); 

     $this->getLayout()->getBlock('head')->setCanLoadExtJs(true); 

     $this->_addContent($this->getLayout()->createBlock('pmadmin/adminhtml_pmadmin_edit')) 
      ->_addLeft($this->getLayout()->createBlock('pmadmin/adminhtml_pmadmin_edit_tabs')); 

     $this->renderLayout(); 
    } else { 
     Mage::getSingleton('adminhtml/session')->addError(Mage::helper('pmadmin')->__('Item does not exist')); 
     $this->_redirect('*/*/'); 
    } 
} 

public function newAction() 
{ 
    $this->_forward('edit'); 
} 

public function saveAction() { 
    $post_data=$this->getRequest()->getPost(); 

    if ($post_data) { 
     try {     
    //save file to the destination folder 
      if (isset($_FILES)){ 
       if ($_FILES['file_path']['name']) { 

        $path = Mage::getBaseDir('media') . DS . 'rts' . DS .'pmadmin'.DS; 
        $uploader = new Varien_File_Uploader('file_path'); 
        $uploader->setAllowedExtensions(array('PDF','pdf')); 
        $uploader->setAllowRenameFiles(false); 
        $uploader->setFilesDispersion(false); 
        $destFile = $path.$_FILES['file_path']['name']; 
        $filename = $uploader->getNewFileName($destFile); 
        $uploader->save($path, $filename); 

        $post_data['file_path']='rts/pmadmin/'.$filename; 
       } 
      } 
    //save file path to the database 
      $model = Mage::getModel("pmadmin/pmadmin") 
      ->addData($post_data) 
      ->setId($this->getRequest()->getParam("id")) 
      ->save(); 

      Mage::getSingleton("adminhtml/session")->addSuccess(Mage::helper("adminhtml")->__("File was successfully saved")); 
      Mage::getSingleton("adminhtml/session")->setPmadminData(false); 

      if ($this->getRequest()->getParam("back")) { 
       $this->_redirect("*/*/edit", array("id" => $model->getId())); 
       return; 
      } 
      $this->_redirect("*/*/"); 
      return; 
     } 
     catch (Exception $e) { 
      Mage::getSingleton("adminhtml/session")->addError($e->getMessage()); 
      Mage::getSingleton("adminhtml/session")->setPmadminData($this->getRequest()->getPost()); 
      $this->_redirect("*/*/edit", array("id" => $this->getRequest()->getParam("id"))); 
     return; 
     } 

    } 
    $this->_redirect("*/*/"); 
} 

public function deleteAction() 
{ 
    if($this->getRequest()->getParam('id') > 0) { 
     try { 
      $pmadminModel = Mage::getModel('pmadmin/pmadmin'); 

      $pmadminModel->setId($this->getRequest()->getParam('id')) 
       ->delete(); 

      Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item 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('*/*/'); 
} 

Примечание:

Я могу успешно обновить другие поля формы и путь к файлу из записей, но не файл загружен.

ответ

0

вам нужно добавить еще статут, если пользователь не загружает для редактирования. $postdata['file_path']['value'] это создано magento автоматически.

if (isset($_FILES)){ 
       if ($_FILES['file_path']['name']) { 

        $path = Mage::getBaseDir('media') . DS . 'rts' . DS .'pmadmin'.DS; 
        $uploader = new Varien_File_Uploader('file_path'); 
        $uploader->setAllowedExtensions(array('PDF','pdf')); 
        $uploader->setAllowRenameFiles(false); 
        $uploader->setFilesDispersion(false); 
        $destFile = $path.$_FILES['file_path']['name']; 
        $filename = $uploader->getNewFileName($destFile); 
        $uploader->save($path, $filename); 

        $post_data['file_path']='rts/pmadmin/'.$filename; 
       } 
    else { 
       $postdata['file_path']=$postdata['file_path']['value']; 
      } 
    } 
Смежные вопросы