I\'m trying to add a custom printing button (like print invoice) on the Sales Order View page (Sales > Orders > Order #... view).
I\'ve do
I solved it a little bit after I posted. The solution for me was the following:
// Order View Page button
if(get_class($block) =='Mage_Adminhtml_Block_Sales_Order_View'
&& $block->getRequest()->getControllerName() == 'sales_order')
{
$block->addButton('test_print', array(
'label' => 'Test',
'onclick' => 'setLocation(\'' . $block->getUrl('html/sales_order/print') . '\')',
'class' => 'go'
));
}
In Magento, any class function starting with an underscore is defined as private or protected -- it's the naming convention the core team uses -- so you cannot call it from outside the class. This is why $block->_addButton() does not work.
The good news is you can call $block->addButton() (no underscore). This is the public method that Mage_Adminhtml_Block_Widget_Container provides you.
Also, you can't call addButton() from $this, because $this is pointing to your observer class, which doesn't have an addButton() method defined (which is what your error is saying).