Model view controller 为Magento中控制器的操作之前/之后添加事件
我在Magento有一个控制器,如下所示:Model view controller 为Magento中控制器的操作之前/之后添加事件,model-view-controller,zend-framework,magento,Model View Controller,Zend Framework,Magento,我在Magento有一个控制器,如下所示: #File: ./app/local/FilFact/Test/IndexController class FilFact_Test_IndexController extends Mage_Core_Controller_Front_Action{ public function indexAction(){ $this->_testConfig(); } } 我需要为添加两个事件: 在之前索引操作 在之后索引
#File: ./app/local/FilFact/Test/IndexController
class FilFact_Test_IndexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
$this->_testConfig();
}
}
我需要为添加两个事件:在
之前索引操作
在
之后索引操作
我该怎么做呢?这很简单,因为Mage\u Core\u Controller\u Varien\u Action基类提供调度前/调度后事件 如果你打开Mage_Core_Controller_Varien_Action类,你会发现两种方法:和 这些方法执行一些任务,最重要的是触发三个事件
controller_action_(pre|post)dispatch
controller_action_(pre|post)dispatch_{{routeName}}
controller_action_(pre|post)dispatch_{{fullActionName}}
fullActionName是路由名称、控制器名称和操作名称,由“\”和所有小写字母分隔。(请参阅以供参考)
/app/code/local/FilFact/Test/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<FilFact_Test>
<version>1.0.0</version>
<FilFact_Test>
</modules>
<global>
<models>
<FilFact_Test>
<class>FilFact_Test_Model</class>
</FilFact_Test>
</models>
</global>
<frontend>
<routers>
<filfact>
<use>standard</use>
<args>
<module>FilFact_Test</module>
<frontName>filfact</frontName>
</args>
</filfact>
</routers>
<events>
<controller_action_predispatch_filfact_index_index>
<observers>
<FilFact_Test>
<class>FilFact_Test/Observer</class>
<method>indexPreDispatch</method>
</FilFact_Test>
</observers>
</controller_action_predispatch_filfact_index_index>
<controller_action_postdispatch_filfact_index_index>
<observers>
<FilFact_Test>
<class>FilFact_Test/Observer</class>
<method>indexPostDispatch</method>
</FilFact_Test>
</observers>
</controller_action_postdispatch_filfact_index_index>
</events>
</frontend>
</config>
1.0.0
FilFact\u测试\u模型
标准
菲卢试验
费尔法特
FilFact_测试/观察者
indexPreDispatch
FilFact_测试/观察者
不定期派送
/app/code/local/FilFact/Test/Model/Observer.php
<?php
class FilFact_Test_Model_Observer
{
public function indexPreDispatch(Varien_Event_Observer $observer)
{
// TODO: Your code
}
public function indexPostDispatch(Varien_Event_Observer $observer)
{
// TODO: Your code
}
}
我会试试看。:)喜欢你的答案。你想提供这两个事件,以便其他模块可以连接到它们,是吗?是的,我使用这样的方式:添加语句:Mage::dispatchEvent('test_index_index_index_before_action',$data)代码>在索引操作中。但这并不好。下面的答案更好。