G'Day 所有,
我正在尝试编写我的第一个 magento 事件处理程序来捕获“ checkout_cart_save_after ”但我无法让我的 Observer.php 代码触发,在查看有关 magento 事件的网站 2 天后,我了解整个过程,但代码是没有运行..我很困惑为什么。
这是 /var/magento/app/etc/modules/ 中的模块 xml 文件
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Yourmodule>
<codePool>local</codePool>
<active>true</active>
<version>1.0.0</version>
</Namespace_Yourmodule>
</modules>
</config>
正如你所看到的,我只是在使用命名空间和Yourmodule,因为我正在为其他人编写教程......
在我的模块的 etc 目录(/var/magento/app/code/local/Namespace/Yourmodule/Module)我有 config.xml
<?xml version="1.0"?>
<global>
<events>
<checkout_cart_save_after>
<observers>
<yourmodule_after_observer>
<type>singleton</type>
<class>Namespace_Yourmodule_Model_Observer</class>
<method>checkout_cart_save_after</method>
</yourmodule_after_observer>
</observers>
</checkout_cart_save_after>
</events>
</global>
在 Modules 目录中,我有 Observer.php 文件:
class Namespace_Yourmodule_Model_Observer
{
/*----------------------------------------
*
* LogInfo()
*
* Basic logging of activity to disk for debugging
*/
public function LogInfo($msg)
{
$logfile="/logs/Namespace-module.log";
$fd=fopen($logfile,"a");
if($fd)
{
fwrite($fd,$msg."\n");
fclose($fd);
}
}
public function checkout_cart_save_before($observer)
{
LogInfo("save_before called");
}
public function checkout_cart_save_after($observer)
{
LogInfo("save_after called");
}
}
尝试从购物车中添加和删除项目的结果是没有创建日志文件,手动创建时没有写入数据,system.log 显示没有错误,如果我歪曲 XML 它报告错误,所以 XML 文件正在阅读。
关于我错过了什么的任何想法???
席德
12/2 更新:
我已经在这个周末度过了这个问题并解决了这个问题,感谢您的提示,这是我应该学习的一些小事情的组合,并且 XML 文件的格式现在与上面的建议相匹配......现在有一个教程!我已经用工作代码和配置文件完整地记录了这个过程。
请参阅http://z900collector.wordpress.com/magento/magento-events/