Let us look what happend here. If you make a look on the line that is expressed by the error, you can see this code
protected function _prepareLayout()
{
$this->setChild( 'grid',
$this->getLayout()->createBlock( $this->_blockGroup.'/' . $this->_controller . '_grid',
$this->_controller . '.grid')->setSaveParametersInSession(true) );
return parent::_prepareLayout();
}
As you can see, setSaveParametersInSession()
function is used inside _prepareLayout()
method. This method will invoke by magento, when it starts to prepare layout to render. Here you can see that admin grid container
(ie Mage_Adminhtml_Block_Widget_Grid_Container
class) is trying to set a child block. If you make a good look there, you can see that, it uses some properties that we are set through custom grid container
(ie Afycon_Customercredits_Block_Adminhtml_Credits
class) in order to generate the child block. In custom grid container
, we are setting these two properties
$this->_controller = 'customercredits_credits';
$this->_blockGroup = 'customercredits';
Using these values, magento first try to generate a block and then set that block as child to grid container. But what happens here is, Magento can't generate a valid block instance due to wrong property values. According to the given value, Magento now trying to create a block customercredits/customercredits_credits_grid
( this stands for Afycon_Customercredits_Block_CustomerCredits_Credits_Grid
) and it cannot find that block instance defined anywhere. So in effect, Magento cannot set grid block and as a result it throws an error.
So here your grid block is Afycon_Customercredits_Block_Adminhtml_Credits_Grid
. In order to autogenerate this class, you need to set
$this->_controller = 'adminhtml_credits';
BIG NOTE
"$this->_blockGroup
should hold block alias name that you set through config.xml
and $this->_controller
should hold the path to your grid container".
Hope that helps
Here getBlock('collections.edit.tab.product')
returns null
and that is why setCollectionsProducts()
is not working. From your layout udpate xml file, collections.edit.tab.product
block stands for the block class Gdata_Collections_Block_Adminhtml_Collections_Edit_Tab_Product
. I can see that you defined that block file correctly.
So checkout the folder path for that file, it should be app/code/<codePool>/Gdata/Collections/Block/Adminhtml/Collections/Edit/Tab/Product.php
.
Also make sure, your layout update xml file resides in admin theme section. That means it's location should be at app\design\adminhtml\default\default\layout\gdata_collections.xml
Also look for any log errors for more details.
clear the cache and try again.
Best Answer
Take a look at /app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php
In order to use
Mage::registry('current_order')
it must first be set (Mage::register('current_order', $order);
) some where , else you going to get a Fatal error