4

每当在管理员 cp 中更新产品时,我都会尝试解雇观察者。记录更新。

配置文件

<?xml version="1.0"?>
<config>
    <modules>
        <Mod_Products>
            <version>1.0.0</version>
        </Mod_Products>
    </modules>

    <models>
        <Mod_Products>
            <class>Mod_Products_Model</class>
        </Mod_Products>
    </models>

    <events>
        <catalog_product_save_after>
            <observers>
                <Mod_Products_stock>
                    <type>singleton</type>
                    <class>Mod_Products_Model</class>
                    <method>logUpdate</method>
                </Mod_Products_stock>
            </observers>
        </catalog_product_save_after>
    </events>
</config>

观察者.php

class Mod_Products_Model_Observer {
    public function logUpdate($observer) {
        $event = $observer->getEvent()->getControllerAction()->getFullActionName();

        Mage::log('Event Fired: ' . $event);
        Mage::log(json_encode($observer->getEvent()));
    }
}

日志中没有错误,也没有输出。

4

7 回答 7

2

不知道为什么 op 接受了 Jason 并没有真正解决它的答案,但这是未来寻求者的正确答案(我从 Emi 对他自己的答案的评论中注意到它):缺少 adminhtml 标签!

配置应该如下所示(假设我没有错过任何其他内容):

<adminhtml>
    <events>
        <catalog_product_save_after>
            <observers>
                <Mod_Products_stock>
                    <type>singleton</type>
                    <class>Mod_Products_Model</class>
                    <method>logUpdate</method>
                </Mod_Products_stock>
            </observers>
        </catalog_product_save_after>
    </events>
</adminhtml>

希望这可以帮助。

于 2015-12-09T15:32:14.533 回答
0

对于遇到此问题的人来说,一个可能的解决方案是您的 Magento 应用程序可能没有适当的权限来写入app/var文件夹。特别是如果您使用的是基于 UNIX/Linux 的操作系统。

要解决此问题,只需将终端定位到 Magento 应用程序的根目录即可。到达那里后,使用以下命令为您的var文件夹授予适当的权限:

sudo chmod 777 -R var/

一旦我这样做了,我的应用程序就能够在文件夹结构下记录和创建其他文件夹。

于 2014-07-09T20:46:07.847 回答
0

让我们一一浏览这些文件。

应用程序/etc/modules/Mod_Products.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mod_Products>
            <!-- Change to Community codePool if in app/code/community -->
            <codePool>local</codePool> 
            <active>true</active>
        </Mod_Products>
    </modules>
</config>

app/code/local/Mod/Products/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mod_Products>
            <version>1.0.0</version>
        </Mod_Products>
    </modules>

    <!-- Marking models as global sometimes helps -->
    <global>
        <models>
            <Mod_Products>
                <class>Mod_Products_Model</class>
            </Mod_Products>
        </models>
    </global>

    <events>
        <catalog_product_save_after>
            <observers>
                <mod_products_model_observer>
                    <type>singleton</type>
                    <class>Mod_Products_Model_Observer</class>
                    <method>logUpdate</method>
                </mod_products_model_observer>
            </observers>
        </catalog_product_save_after>
    </events>
</config>

app/code/local/Mod/Products/Model/Observer.php

class Mod_Products_Model_Observer {
    public function logUpdate($observer) {
        $event = $observer->getEvent()->getControllerAction()->getFullActionName();

        Mage::log('Event Fired: ' . $event);
        Mage::log(json_encode($observer->getEvent()));
    }
}

注意文件名和目录,以及我更新的 config.xml 中不同的 xml 句柄。让我知道这是否适合您。

于 2013-08-26T16:09:27.683 回答
0

配置中的类必须是 Observer 类,因此更改为:

<class>Mod_Products_Model_Observer</class>
于 2013-08-26T15:15:57.103 回答
0

我在同样的情况下苦苦挣扎,最后发现Mage_Log不起作用。尝试使用类似die("I'm here"); 而不是Mage::Log()用于跟踪并查看它是否遇到您的班级。如果是这样,请尝试通过Configuration: Developer: Log Setting (Enabled=Yes)打开Mage_Log。此外,检查是否在Configuration: Advanced中启用了Mage_Log

于 2015-05-25T18:52:45.307 回答
0

一旦我遇到同样的问题并且我通过刷新系统缓存解决了这个问题,所以您也可以尝试刷新缓存以刷新其配置。

于 2016-02-11T06:51:23.197 回答
-1

检查您的模块是否存在"disable module output"并启用
System -> configuration -> advenced ->禁用模块输出。
并检查您的系统日志文件

于 2016-04-14T10:26:11.963 回答