我创建了一个自定义模块,当它的控制器被调用时,我想让观察者扩展功能。 假设我的控制器是: -
<?php
class Test_Mod_IndexController extends Mage_Core_Controller_Front_Action
{
public function saveAction()
{
// code
$dataval = $this->getRequest()->getParams();
Mage::dispatchEvent('my_custom_event', $dataval);
}
}
这是配置文件: -
<?xml version="1.0"?>
<config>
<modules>
<Myobs_Obser>
<version>0.1.0</version>
</Myobs_Obser>
</modules>
<global>
<models>
<obser>
<class>Myobs_Obser_Model</class>
</obser>
</models>
</global>
<frontend>
<events>
<my_custom_event>
<observers>
<Myobs_Obser_my_custom_event_observer>
<type>singleton</type>
<class>obser/observer</class>
<method>my_custom_method</method>
</Myobs_Obser_my_custom_event_observer>
</observers>
</my_custom_event>
</events>
</frontend>
</config>
以下是观察员: -
<?php
class Myobs_Obser_Model_Observer
{
public function my_custom_method($observer)
{
$event = $observer->getEvent();
var_dump($event);
die;
}
}
?>
它不起作用请帮助我。 感谢。
答案 0 :(得分:0)
使用以下命令更新您的控制器:
<?php
class Test_Mod_IndexController extends Mage_Core_Controller_Front_Action
{
public function saveAction()
{
//creating your own dispatch event
Mage::dispatchEvent(
'mod_submit_before',
array('key' => 'value')//parameters to access using observer object in event function parameter
);
// code
}
}
答案 1 :(得分:0)
制作配置条目:
<global>
..
..
<events>
<my_custom_event>
<observers>
<namespace_modulename_my_custom_event_observer>
<type>singleton</type>
<class>modulename/observer</class>
<method>my_custom_method</method>
</namespace_modulename_my_custom_event_observer>
</observers>
</my_custom_event>
</events>
..
..
</global>
现在在你的模型中写下observer.php:
<?php
class Namespace_Modulename_Model_Observer
{
public function my_custom_method($observer) {
$event = $observer->getEvent();
// getter method to fetch cid value passed from the dispatcher
$cid = $event->getCid();
echo $cid;
exit;
}
}
?>
现在在您的控制器中调用您的自定义事件:
<?php
..
$event_data_array = array('cid' => '123');
Mage::dispatchEvent('my_custom_event', $event_data_array);
..
?>
答案 2 :(得分:0)
我可以在以下方面进行修改:
1) Updated Function :
<?php
class Test_Mod_IndexController extends Mage_Core_Controller_Front_Action
{
public function saveAction()
{
// code
$dataval = $this->getRequest()->getParams();
// I have changed the 2nd parameter below as a key value pair, you can access the data using reference key "formdata" in your observer function
Mage::dispatchEvent('my_custom_event', array('formdata' => $dataval));
}
}
2)你的Config.xml,events节点应该进入,下面是你更新的config.xml
<?xml version="1.0"?>
<config>
<modules>
<Myobs_Obser>
<version>0.1.0</version>
</Myobs_Obser>
</modules>
<global>
<models>
<obser>
<class>Myobs_Obser_Model</class>
</obser>
</models>
<events>
<my_custom_event>
<observers>
<obser>
<type>model</type>
<class>obser/observer</class>
<method>mycustommethod</method><!--Avoiding Undescores in methode name-->
</obser>
</observers>
</my_custom_event>
</events>
</global>
</config>
3)以下观察者功能的更新:
<?php
class Myobs_Obser_Model_Observer
{
public function mycustommethod($observer)
{
$event = $observer->getEvent();
var_dump($event);
die;
}
}
?>
4)最后但不是租约,请确保您的文件权限正确。 :) 如果有任何问题,请告诉我。