Magento v1.7中的事件代码无法正常工作

时间:2012-11-30 06:30:51

标签: events magento

G'Day all,

我正在尝试编写我的第一个magento事件处理程序以捕获“ checkout_cart_save_after ”,但是在看了magento上的网站2天之后我无法触发我的Observer.php代码事件我理解整个过程,但代码没有运行..我很困惑为什么。

这是/ 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>

正如您所知,我正在使用命名空间您的模块,因为我正在为其他人编写教程....

在我的模块的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/

1 个答案:

答案 0 :(得分:0)

尝试将config.xml更新为

<?xml version="1.0"?>
<config>
<modules>
    <Namespace_Yourmodule>
        <version>1.0</version>
    </Namespace_Yourmodule>
</modules>
<global>
    <!--helpers>
        <yourmodule>
            <class>Namespace_Yourmodule_Helper</class>
        </yourmodule>
    </helpers-->
    <models>
        <yourmodule>
            <class>Namespace_Yourmodule_Model</class>
        </yourmodule>
    </models>
    <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>
</config>

请参阅Customize Magento using Event/Observer