Magento 1.9 – How to Display Product Thumbnail Image in Admin Form

adminadminformformsmagento-1.9product-images

I'm trying to display product thumbnails in my custom module admin form. But for some reason no thumbnail is showing up.

When I use the code below, it only shows the browse button with no thumbnail, like in the image below.

protected function _prepareForm()
{
$model = Mage::registry('cpstest_productcomment'); 
$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'
)); 

$fieldset->addField('image', 'image', array(
'label'     => Mage::helper('catalog')->__('Image'),
'required'  => false,
'name'     => 'image',              
));
}

And when I use this code, I get an error:
Fatal error: Call to a member function getData() on null in …\app\code\core\Mage\Catalog\Helper\Image.php on line

$fieldset->addField('image', 'image', array(
'label'     => Mage::helper('catalog')->__('Image'),
'required'  => false, // Make true if required field
'name'     => 'image',
'value' => Mage::helper('catalog/image')->init($product, 'thumbnail')->resize(100)              
));

enter image description here

Best Answer

For showing image into edit form, you want to render the image.

Replace your addField to below

$fieldset->addField('image', 'image', array(
    'label'    => Mage::helper('catalog')->__('Image'),
    'required' => false, // Make true if required field
    'name'     => 'image',
    'renderer' => 'employee/adminhtml_employee_renderer_image',         
));

Here as you can see we have specified an renderer block type as employee/adminhtml_employee_renderer_image. Now we need to create this Block. The code inside this block is as follows:

<?php
class Namespace_Employee_Block_Adminhtml_Employee_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {
        $imageName = $row->getAfterImage(); 
        $imagePath = Mage::getBaseUrl("media").$imageName;                 

        $io = new Varien_Io_File();
        if ($io->fileExists($imagePath) && !empty($imageName)) {           
            return "<img width='50px' height='50px' src='".$imagePath."' />"; 
        } else {
            return ""; 
        }
    }
}
Related Topic