Php 带有图像文件的Magento自定义管理模块
我正在尝试在Magento中创建一个管理模块 步骤1: 其中包含以下字段 步骤2:填充一些值和一个图像 步骤3:当我试图保存此项目时,该项目已成功保存,但此处未显示图像。但实际上,这些图像是复制到我的Magento媒体文件夹中的 步骤4:项目成功保存后,显示如下 但实际上我想让它显示出这样的东西 这是我的密码,请找到 \u prepareForm()-字段集代码:Php 带有图像文件的Magento自定义管理模块,php,magento,Php,Magento,我正在尝试在Magento中创建一个管理模块 步骤1: 其中包含以下字段 步骤2:填充一些值和一个图像 步骤3:当我试图保存此项目时,该项目已成功保存,但此处未显示图像。但实际上,这些图像是复制到我的Magento媒体文件夹中的 步骤4:项目成功保存后,显示如下 但实际上我想让它显示出这样的东西 这是我的密码,请找到 \u prepareForm()-字段集代码: $fieldset->addField('image', 'file', array( 'label'
$fieldset->addField('image', 'file', array(
'label' => Mage::helper('modulename')->__('Image'),
'name' => 'image',
'note' => '(*.jpg, *.png, *.gif)',
));
\u prepareForm():
<?php
class Namespace_ModuleName_Block_Adminhtml_Measurement_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
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();
}
}
?>
public function saveAction() {
if ($data = $this->getRequest()->getPost()) {
$model = Mage::getModel('modulename/modulename');
$model->setData($data)->setId($this->getRequest()->getParam('id'));
try {
if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
$model->setCreatedTime(now())
->setUpdateTime(now());
} else {
$model->setUpdateTime(now());
}
$model->save();
if(isset($_FILES['image']['name']) and (file_exists($_FILES['image']['tmp_name']))) {
try {
$uploader = new Varien_File_Uploader('image');
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); // or pdf or anything
$uploader->setAllowRenameFiles(false);
// setAllowRenameFiles(true) -> move your file in a folder the magento way
// setAllowRenameFiles(true) -> move your file directly in the $path folder
$uploader->setFilesDispersion(false);
$path = Mage::getBaseDir('media') . '/modulename_images/' ;
$uploader->save($path, $model->getId().'.jpg');
$model->setImage($model->getId().'.jpg');
$model->save();
}catch(Exception $e) {
print_r($e);
die;
}
}
else {
if(isset($data['image']['delete']) && $data['image']['delete'] == 1)
$data['image_main'] = '';
else
unset($data['image']);
}
// Mage::getModel('modulename/flatrates')->saveMultipleFlatrates($data, $model->getId(),$this->getRequest()->getParam('cat_id'));
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('modulename')->__('Item was successfully saved'));
Mage::getSingleton('adminhtml/session')->setFormData(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')->setFormData($data);
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;
}
}
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('modulename')->__('Unable to find item to save'));
$this->_redirect('*/*/');
}
我在这里做错什么了吗
有什么想法吗
如果有拼写错误,我非常抱歉。为了获得图像预览,您必须使用
图像
字段类型,而不是文件
,如下所示(查看第二个参数):
这是因为您已将图像存储在媒体文件夹的子目录中,因此必须在显示之前设置图像字段的值()。。 像在EditAction()中一样,添加此代码这里是我的字段名配置文件\u pic
if($model->getProfilePic())
{
$model->setProfilePic('testimonial/'.$model->getProfilePic());
}
或者您可以使用helper预览该图像我刚刚注意到,在控制器中,您只需保存文件名。您必须将整个路径保存在您的模型中(即,
$model->setImage($path.$model->getId()..jpg');
)是的,但我没有任何问题。这是因为您已将图像存储在媒体文件夹的子目录中,因此您必须在显示之前设置图像字段的值()。。就像editAction()一样,你能把代码寄给我吗。。?鸣叫。alyan@gmail.com
if($model->getProfilePic())
{
$model->setProfilePic('testimonial/'.$model->getProfilePic());
}