Magento – Having error Fatal error: Call to undefined method

magento-1.9PHP

IndexController.php

<?php
class Dcgpac_Sitemaps_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {

      $this->loadLayout()
            ->_addContent($this->getLayout()->createBlock('sitemaps/admin_main'))
            ->renderLayout();                   
    }

   public function newAction()
    {
        $this->loadLayout()
        ->_addContent($this->getLayout()->createBlock('sitemaps/admin_new'))
        ->renderLayout();
    }

    public function editAction()
    {
        $this->loadLayout();

        $this->_addContent($this->getLayout()->createBlock('sitemaps/admin_edit'));

        $this->renderLayout();
    }

    public function saveAction()
    {
        $params = $this->getRequest()->getParams();

        if(!$params)
        {
            Mage::getSingleton('adminhtml/session')->addNotice($this->__('None specified parameter'));
            $this->getResponse()->setRedirect($this->getUrl('*/*/'));
        } 
        else
        {
            if(Mage::getModel('sitemaps/sitemap')->genSitemap($params, 'edit'))
            {
                Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('sitemaps')->__('
XML successfully updated.'));
                $this->getResponse()->setRedirect($this->getUrl('*/*/'));
            }
            else
            {
                Mage::getSingleton('adminhtml/session')->addNotice($this->__('Error generating file.'));
                $this->getResponse()->setRedirect($this->getUrl('*/*/'));
            }
        }
    }

    public function updateAction()
    {
        $sitemapId = $this->getRequest()->getParam('id', false);

        $sitemap = Mage::getModel('sitemaps/sitemap')->load($sitemapId);

        $type = Mage::getModel('sitemaps/type')->load($sitemap->getType());
        $fields = json_decode($type->getFields());

        $params['sitemap_id'] = $sitemapId;
        $params['type'] = $type->getName();
        $params['filename'] = $sitemap->getFilename();
        $params['path'] = $sitemap->getPath();

        foreach ($fields as $key => $value)
        {
            if($key === 'master')
            {
                foreach($value as $k => $ff)
                {
                    if($k !== 'product')
                    {
                        $params['field']['master']['code'] = $value->code;
                    }
                    else
                    {
                        $params['field']['master']['product']['code'] = $ff->code;
                    }
                }
            }

            if($key === 'default')
            {
                foreach ($value as $k => $v)
                {
                    $params['field']['default'][$k]['code'] = $v->code;
                    $params['field']['default'][$k]['value'] = $v->value;
                }
            }

            if($key === 'custom')
            {
                foreach ($value as $k => $v)
                {
                    $params['field']['custom'][$k]['code'] = $v->code;
                    $params['field']['custom'][$k]['value'] = $v->value;
                }
            }
        }

        if(Mage::getModel('sitemaps/sitemap')->genSitemap($params, 'edit'))
        {
            Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('sitemaps')->__('XML successfully updated.'));
            $this->getResponse()->setRedirect($this->getUrl('*/*/'));
        }
        else
        {
            Mage::getSingleton('adminhtml/session')->addNotice($this->__('Error generating file.'));
            $this->getResponse()->setRedirect($this->getUrl('*/*/'));
        }
    }

    public function genAction()
    {
        $params = $this->getRequest()->getParams();

        if(!$params)
        {
            Mage::getSingleton('adminhtml/session')->addNotice($this->__('Nenhum parĂ¢metro especificado'));
            $this->getResponse()->setRedirect($this->getUrl('*/*/'));
        }
        else
        {
            if(Mage::getModel('sitemaps/sitemap')->genSitemap($params))
            {
                Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('sitemaps')->__('XML successfully generated.'));
                $this->getResponse()->setRedirect($this->getUrl('*/*/'));
            }
            else
            {
                Mage::getSingleton('adminhtml/session')->addNotice($this->__('Error generating file.'));
                $this->getResponse()->setRedirect($this->getUrl('*/*/'));
            }
        }
    }

    public function deleteAction()
    {       
        $sitemapId = $this->getRequest()->getParam('id', false);

        try {

            $sitemap = Mage::getModel('sitemaps/sitemap')->load($sitemapId);

            $data = $sitemap->getData();

            $io = new Varien_Io_File();

            $io->open(array('path' => Mage::getBaseDir().'/'.$data["path"]));

            if($io->fileExists($data["filename"]))
            {
                $io->rm($data["filename"]);
            }

            $io->close();

            Mage::getModel('sitemaps/sitemap')->setId($sitemapId)->delete();

            Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('sitemaps')->__('XML deleted successfully.'));

            $this->getResponse()->setRedirect($this->getUrl('*/*/'));

        } 
        catch (Exception $e) {
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        }

    }
}

Can any one please help.

Best Answer

Method you are trying to call does not exist in the class you are extending. _addContent() exists only in admin controller Mage_Adminhtml_Controller_Action class. Method itself is pretty simple.

protected function _addContent(Mage_Core_Block_Abstract $block)
{
    $this->getLayout()->getBlock('content')->append($block);
    return $this;
}

So you can either call:

$this->loadLayout();
$this->getLayout()->getBlock('content')->append($block);

instead of _addContent() or create your own layout update xml file and do everything there.

Related Topic