关于magento admin grid的研究的延续。我正在尝试创建文件上传。保存过程已完成,无错误,并在数据库中添加了表格行。
文件路径未保存在数据库中。
未创建目录路径,当然没有文件上传到服务器。
注意:该过程已完成,网格和数据库中还有其他表格行。
我只是引用此链接Magento image upload form field
如何为上传的文件创建目录文件夹?
如何在数据库表中保存路径?
是否有要在config.xml中添加的代码?
最后我解决了文件上传问题。 感谢@PHP Weblineindia指导我。 这是我更新的控制器。
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("*/*/");
}
这是我的表格。
protected function _prepareForm() {
$form = new Varien_Data_Form(array(
'id' => 'edit_form',
'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
'method' => 'post',
'enctype' => 'multipart/form-data'
)
);
$form->setUseContainer(true);
$this->setForm($form);
return parent::_prepareForm();
}
路径应保存在表的file_path列中,文件应上传到media / pmadmin目录中。
谢谢!
答案 0 :(得分:0)
@Rodge你试图使用下面的帖子数据获取文件数据
$postData = $this->getRequest()->getPost();
$postData['pmadmin_file'];
并且您希望上传文件类型,因此文件类型不属于帖子。
尝试以下方法获取文件数据。
$file_name=$_FILES['pmadmin_file']['name'];
并测试您在saveAction()方法中获取文件名,之后您可以存储文件数据。在目录中。
在你的控制器文件中你有保存数据,如
如果(isset($ imgFilename))
$newsModel->setImage($imgFilename);
$newsModel->setId($this->getRequest()->getParam('id'))
->setTitle($postData['title'])
->setShort_description($postData['short_description'])
->setCustomer_group_id($postData['customer_group_id'])
->setIs_active($postData['is_active'])
->setValue($postData['value'])
->save();
尝试保存数据,如
if(isset($ imgFilename)){
$newsModel->setId($this->getRequest()->getParam('id'))
->setTitle($postData['title'])
->setFilePath($imgFilename)
->setShortDescription($postData['short_description'])
->setCustomerGroupId($postData['customer_group_id'])
->setIsActive($postData['is_active'])
->setValue($postData['value'])
->save();
}