1

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/

4

1 回答 1

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>

请参阅使用事件/观察者自定义 Magento

于 2012-11-30T10:01:24.753 回答