I am trying to add an Image using my custom admin form. The image is saved while uploading it via custom admin form. But does not displays in the admin grid image column of my custom-created module. Here is the screenshot.
As you can see my image has been saved using my custom admin form. The src of an image is generated and the image is been displayed in the my custom created form.
But the image does not displyed in the admin grid. I had created the renderer to get the image but it doe not work for me. The renderer doesn't generate the src of my image.
Please check my code below:
Grid.php
$this->addColumn("image", array(
"header" => Mage::helper("news")->__("Image"),
"type" => "text",
"width" => "150px",
"index" => "image",
"renderer" => "Custom_News_Block_Adminhtml_News_Grid_Renderer_Image",
));
Custom/News/Block/Adminhtml/News/Grid/Renderer/Image.php
class Custom_News_Block_Adminhtml_News_Grid_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
public function render(Varien_Object $row) {
$val = Mage::helper('news/news')->init($row, 'thumbnail')->resize(100);
$out = '<img src=". $val ." width="100px" height="100px"/>';
return $out;
} }
Form.php
$fieldset->addField('image', 'image', array(
"label" => Mage::helper("news")->__("Image"),
"name" => "image",
"note" => "(*.jpg, *.png, *.gif)",
));
NewsController.php
try { //Save Image
try {
if ((bool) $postData['image']['delete'] == 1) {
$postData['image'] = '';
} else {
unset($postData['image']);
if (isset($_FILES)) {
if ($_FILES['image']['name']) {
if ($this->getRequest()->getParam("id")) {
$model = Mage::getModel("news/news")->load($this->getRequest()->getParam("id"));
if ($model->getData('image')) {
$io = new Varien_Io_File();
$io->rm(Mage::getBaseDir('media') . DS . implode(DS, explode('/', $model->getData('image'))));
}
}
$path = Mage::getBaseDir('media') . DS . 'news' . DS . 'news' . DS;
$uploader = new Varien_File_Uploader('image');
$uploader->setAllowedExtensions(array('jpg', 'png', 'gif'));
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(false);
$destFile = $path . $_FILES['image']['name'];
$fileName = $uploader->getNewFileName($destFile);
$uploader->save($path, $fileName);
$postData['image'] = "news/news/".$fileName;
}
}
}
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;
}
Can anyone please help me to get it solved. I had refered this this post to create renderer for my custom grid.