I am currently working on Event observer pattern where we need to add custom field name to newsletter subscriber block. I am successfully done with the frontend part like adding the custom field to database using installer script & added the value in database entered by user from frontend.
Now I am stuck with displaying that custom field in magento admin in newsletter grid.
Here goes the config.xml file for this:-
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Scandi_Newsletter>
<version>0.1.0</version>
</Scandi_Newsletter>
</modules>
<global>
<resources>
<scandi_newsletter_setup>
<setup>
<module>Scandi_Newsletter</module>
<class>Scandi_Newsletter_Model_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</scandi_newsletter_setup>
<newsletter_write>
<connection>
<use>core_write</use>
</connection>
</newsletter_write>
<newsletter_read>
<connection>
<use>core_read</use>
</connection>
</newsletter_read>
</resources>
<events>
<newsletter_subscriber_save_before>
<observers>
<scandi_newsletter_model_observer>
<type>model</type>
<class>Scandi_Newsletter_Model_Observer</class>
<method>newsletterSubscriberSaveBefore</method>
</scandi_newsletter_model_observer>
</observers>
</newsletter_subscriber_save_before>
</events>
</global>
<adminhtml>
<events>
<adminhtml_block_html_before>
<observers>
<layout_before>
<class>Scandi_Newsletter_Model_Observer</class>
<method>addMassAction</method>
</layout_before>
</observers>
</adminhtml_block_html_before>
</events>
</adminhtml>
</config>
This is the code I am using for Observer.php:-
<?php
class Scandi_Newsletter_Model_Observer
{
public function newsletterSubscriberSaveBefore(Varien_Event_Observer $observer) {
$subscriber = $observer->getEvent()->getSubscriber();
$name = Mage::app()->getRequest()->getParam('subscriber_name');
$subscriber->setSubscriberName($name);
return $this;
}
public function addMassAction($observer)
{
echo "i am here"; die;
$block = $observer->getEvent()->getBlock();
$block = $observer->getBlock();
if ($block->getType() == 'adminhtml/newsletter_subscriber_grid') {
/* @var $block Mage_Adminhtml_Block_Newsletter_Subscriber_Grid */
$block->addColumnAfter('subscriber_name', array(
'header' => 'Name',
'type' => 'text',
'index' => 'subscriber_name',
), 'subscriber_id');
}
}
}
?>
I am confused with whether we can use same observer class for multiple events like I am using currently or not.
If yes,observer for admin part is not working.
Any suggestions on that???