Просто продолжение моего исследования о 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('*/*/');
}
Примечание:
Я могу успешно обновить другие поля формы и путь к файлу из записей, но не файл загружен.