每当在admin cp中更新产品时,我都会尝试解雇观察者。记录更新。
的Config.xml
<?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>
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()));
}
}
日志中没有错误也没有输出。
答案 0 :(得分:2)
不知道为什么op接受了Jason的答案并没有真正解决它,但这是未来寻求者的正确答案(我注意到来自Emi&#39; s)评论他自己的答案):缺少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>
希望这会有所帮助。
答案 1 :(得分:0)
配置中的类必须是Observer类,因此请更改为:
<class>Mod_Products_Model_Observer</class>
答案 2 :(得分:0)
让我们逐个浏览文件。
应用的/ etc /模块/ 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>
应用/代码/本地/ MOD /产品的/ 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>
应用/代码/本地/ MOD /产品/型号/ 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句柄。如果这对您有用,请告诉我。
答案 3 :(得分:0)
遇到此问题的可能解决方案是您的Magento应用程序可能没有适当的权限来写入app/var
文件夹。特别是如果您使用的是基于UNIX / Linux的操作系统。
要解决此问题,只需将终端定位到Magento应用程序的根目录即可。进入后,使用以下命令为var
文件夹授予适当的权限:
sudo chmod 777 -R var/
一旦我这样做,我的应用程序就能够在文件夹结构下记录并创建其他文件夹。
答案 4 :(得分:0)
我在同样的情况下挣扎,最后发现 Mage_Log 无效。尝试使用像 die(&#34;我在这里&#34;); 而不是 Mage :: Log()这样的东西进行跟踪,看看它是否来你的班级与否。如果是,请尝试通过配置开发 Mage_Log :开发人员:日志设置(启用=是)。 另外,检查配置:高级是否启用了 Mage_Log 。
答案 5 :(得分:0)
一旦我遇到同样的问题,我只是通过刷新系统缓存解决了这个问题,所以你也可以尝试刷新缓存以刷新其配置。
答案 6 :(得分:-1)
检查您的模块是否存在于"disable module output"
并启用了
System -> configuration -> advenced ->
禁用模块输出
并检查您的系统日志文件