magento 1.9 编辑表单不显示缩略图
magento 1.9 Edit form is not displaying thumbnail image
我正在尝试在管理自定义模块的编辑表单中显示缩略图。
我收到删除图像的复选框。
我得到一个应该显示图像的方框。
但是它不显示图像。
请给我建议解决方案
我在控制器中的 save() 操作是
public function saveAction()
{
if ($data = $this->getRequest()->getPost())
{
if(isset($_FILES['shop_image']['name']) && $_FILES['shop_image']['name'] != '')
{
try {
/* Starting upload */
$uploader = new Varien_File_Uploader('shop_image');
// Any extention would work
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
echo $path = Mage::getBaseDir('media').DS.'ud'.DS;
$uploader->save($path, $_FILES['shop_image']['name'] );
} catch (Exception $e) {
}
// echo $path;exit;
//this way the name is saved in DB
$data['shop_image'] = $path.$_FILES['shop_image']['name'];
}
else if((isset($data['shop_image']['delete']) && $data['shop_image']['delete'] == 1)){
.'ud'.DS.$data['shop_image']['value'];
unlink($data['shop_image']['value']);
//set path to null and save to database
$data['shop_image'] = '';
}
$model = Mage::getModel('shop/shop');
$id = $this->getRequest()->getParam('id');
if ($id) {
$model->load($id);
}
$model->setData($data);
Mage::getSingleton('adminhtml/session')->setFormData($data);
try {
if ($id) {
$model->setId($id);
}
$model->save();
if (!$model->getId()) {
Mage::throwException(Mage::helper('shop')->__('Error saving shop'));
}
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('shop')->__('Shop was successfully saved.'));
Mage::getSingleton('adminhtml/session')->setFormData(false);
// The following line decides if it is a "save" or "save and continue"
if ($this->getRequest()->getParam('back')) {
$this->_redirect('*/*/edit', array('id' => $model->getId()));
} else {
$this->_redirect('*/*/');
}
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
if ($model && $model->getId()) {
$this->_redirect('*/*/edit', array('id' => $model->getId()));
} else {
$this->_redirect('*/*/');
}
}
return;
}
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('shop')->__('No data found to save'));
$this->_redirect('*/*/');
}
我的form.php是
<?php
class Sample_Shop_Block_Adminhtml_Shop_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
if (Mage::getSingleton('adminhtml/session')->getExampleData())
{
$data = Mage::getSingleton('adminhtml/session')->getExamplelData();
Mage::getSingleton('adminhtml/session')->getExampleData(null);
}
elseif (Mage::registry('example_data'))
{
$data = Mage::registry('example_data')->getData();
}
else
{
$data = array();
}
$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);
$fieldset = $form->addFieldset('example_form', array(
'legend' =>Mage::helper('shop')->__('Shop Information')
));
$fieldset->addField('shopname', 'text', array(
'label' => Mage::helper('shop')->__('Shop Name'),
'class' => 'required-entry',
'required' => true,
'name' => 'shopname',
'note' => Mage::helper('shop')->__('The name of the shop.'),
));
$fieldset->addField('logo', 'text', array(
'label' => Mage::helper('shop')->__('Logo'),
'class' => 'required-entry',
'required' => true,
'name' => 'logo',
));
$fieldset->addField('productimage', 'text', array(
'label' => Mage::helper('shop')->__('Product Image'),
'class' => 'required-entry',
'required' => true,
'name' => 'productimage',
));
$fieldset->addField('state', 'text', array(
'label' => Mage::helper('shop')->__('State'),
'class' => 'required-entry',
'required' => true,
'name' => 'state',
));
$fieldset->addField('shop_image','image', array(
'label' => Mage::helper('shop')->__('Shop Image'),
'required' => false,
'name' => 'shop_image',
));
$form->setValues($data);
return parent::_prepareForm();
}
}
找到以下简单的步骤来显示缩略图。
在您的编辑->tab->表单文件中添加以下代码
例如:Package_Campaign_Block_Adminhtml_Campaign_Edit_Tab_Form
$fieldset->addType('image','Package_Campaign_Block_Adminhtml_Campaign_Helper_Image');
创建以下助手 class 文件以显示缩略图。
class Package_Campaign_Block_Adminhtml_Campaign_Edit_Tab_Form extends Varien_Data_Form_Element_Abstract{
public function __construct($data) {
parent::__construct($data);
$this->setType('file');
}
public function getElementHtml() {
$html = '';
if ($this->getValue()) {
$media = Mage::getBaseUrl('media').'campaign/';
$html = '<a onclick="imagePreview(\''.$this->getHtmlId().'_image\'); return false;" href="'.$this->getValue().'"><img id="'.$this->getHtmlId().'_image" style="border: 1px solid #d6d6d6;" title="'.$this->getValue().'" src="'.$media.$this->getValue().'" alt="'.$this->getValue().'" width="30"></a> ';
}
$this->setClass('input-file');
$html.= parent::getElementHtml();
return $html;
}
}
我正在尝试在管理自定义模块的编辑表单中显示缩略图。 我收到删除图像的复选框。 我得到一个应该显示图像的方框。 但是它不显示图像。
请给我建议解决方案
我在控制器中的 save() 操作是
public function saveAction()
{
if ($data = $this->getRequest()->getPost())
{
if(isset($_FILES['shop_image']['name']) && $_FILES['shop_image']['name'] != '')
{
try {
/* Starting upload */
$uploader = new Varien_File_Uploader('shop_image');
// Any extention would work
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
echo $path = Mage::getBaseDir('media').DS.'ud'.DS;
$uploader->save($path, $_FILES['shop_image']['name'] );
} catch (Exception $e) {
}
// echo $path;exit;
//this way the name is saved in DB
$data['shop_image'] = $path.$_FILES['shop_image']['name'];
}
else if((isset($data['shop_image']['delete']) && $data['shop_image']['delete'] == 1)){
.'ud'.DS.$data['shop_image']['value'];
unlink($data['shop_image']['value']);
//set path to null and save to database
$data['shop_image'] = '';
}
$model = Mage::getModel('shop/shop');
$id = $this->getRequest()->getParam('id');
if ($id) {
$model->load($id);
}
$model->setData($data);
Mage::getSingleton('adminhtml/session')->setFormData($data);
try {
if ($id) {
$model->setId($id);
}
$model->save();
if (!$model->getId()) {
Mage::throwException(Mage::helper('shop')->__('Error saving shop'));
}
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('shop')->__('Shop was successfully saved.'));
Mage::getSingleton('adminhtml/session')->setFormData(false);
// The following line decides if it is a "save" or "save and continue"
if ($this->getRequest()->getParam('back')) {
$this->_redirect('*/*/edit', array('id' => $model->getId()));
} else {
$this->_redirect('*/*/');
}
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
if ($model && $model->getId()) {
$this->_redirect('*/*/edit', array('id' => $model->getId()));
} else {
$this->_redirect('*/*/');
}
}
return;
}
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('shop')->__('No data found to save'));
$this->_redirect('*/*/');
}
我的form.php是
<?php
class Sample_Shop_Block_Adminhtml_Shop_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
if (Mage::getSingleton('adminhtml/session')->getExampleData())
{
$data = Mage::getSingleton('adminhtml/session')->getExamplelData();
Mage::getSingleton('adminhtml/session')->getExampleData(null);
}
elseif (Mage::registry('example_data'))
{
$data = Mage::registry('example_data')->getData();
}
else
{
$data = array();
}
$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);
$fieldset = $form->addFieldset('example_form', array(
'legend' =>Mage::helper('shop')->__('Shop Information')
));
$fieldset->addField('shopname', 'text', array(
'label' => Mage::helper('shop')->__('Shop Name'),
'class' => 'required-entry',
'required' => true,
'name' => 'shopname',
'note' => Mage::helper('shop')->__('The name of the shop.'),
));
$fieldset->addField('logo', 'text', array(
'label' => Mage::helper('shop')->__('Logo'),
'class' => 'required-entry',
'required' => true,
'name' => 'logo',
));
$fieldset->addField('productimage', 'text', array(
'label' => Mage::helper('shop')->__('Product Image'),
'class' => 'required-entry',
'required' => true,
'name' => 'productimage',
));
$fieldset->addField('state', 'text', array(
'label' => Mage::helper('shop')->__('State'),
'class' => 'required-entry',
'required' => true,
'name' => 'state',
));
$fieldset->addField('shop_image','image', array(
'label' => Mage::helper('shop')->__('Shop Image'),
'required' => false,
'name' => 'shop_image',
));
$form->setValues($data);
return parent::_prepareForm();
}
}
找到以下简单的步骤来显示缩略图。 在您的编辑->tab->表单文件中添加以下代码 例如:Package_Campaign_Block_Adminhtml_Campaign_Edit_Tab_Form
$fieldset->addType('image','Package_Campaign_Block_Adminhtml_Campaign_Helper_Image');
创建以下助手 class 文件以显示缩略图。
class Package_Campaign_Block_Adminhtml_Campaign_Edit_Tab_Form extends Varien_Data_Form_Element_Abstract{
public function __construct($data) {
parent::__construct($data);
$this->setType('file');
}
public function getElementHtml() {
$html = '';
if ($this->getValue()) {
$media = Mage::getBaseUrl('media').'campaign/';
$html = '<a onclick="imagePreview(\''.$this->getHtmlId().'_image\'); return false;" href="'.$this->getValue().'"><img id="'.$this->getHtmlId().'_image" style="border: 1px solid #d6d6d6;" title="'.$this->getValue().'" src="'.$media.$this->getValue().'" alt="'.$this->getValue().'" width="30"></a> ';
}
$this->setClass('input-file');
$html.= parent::getElementHtml();
return $html;
}
}