Magento事件给出错误警告:包括(法师/模块名/模型/ Observer.php):未能打开流

问题描述:

日志: 当我点击添加到购物车,我得到这两条线的错误日志system.logMagento事件给出错误警告:包括(法师/模块名/模型/ Observer.php):未能打开流

2015-10-16T00:27:33+00:00 ERR (3): Warning: include(Mage/Modulename/Model/Observer.php): failed to open stream: No such file or directory in /opt/lampp/htdocs/magento2/lib/Varien/Autoload.php on line 94 
2015-10-16T00:27:33+00:00 ERR (3): Warning: include(): Failed opening 'Mage/Modulename/Model/Observer.php' for inclusion (include_path='/opt/lampp/htdocs/magento2/app/code/local:/opt/lampp/htdocs/magento2/app/code/community:/opt/lampp/htdocs/magento2/app/code/core:/opt/lampp/htdocs/magento2/lib:.:/opt/lampp/lib/php') in /opt/lampp/htdocs/magento2/lib/Varien/Autoload.php on line 94 

这里是我的插件名为Namespace_Modulename:

文件: /应用/代码/本地/命名空间/模块名在/ etc/config.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <modules> 
     <Namespace_Modulename> 
      <version>0.0.1</version> 
     </Namespace_Modulename> 
    </modules> 

    <!-- Configure our module's behavior in the global scope --> 
    <frontend> 
     <routers> 
      <modulename> 
      <use>standard</use> 
       <args> 
       <module>Namespace_Modulename</module> 
       <frontName>modulename</frontName> 
       </args> 
      </modulename> 
     </routers> 
    </frontend> 
    <global> 

     <models> 
      <Namespace_Modulename>Namespace_Modulename_Model</Namespace_Modulename> 
     </models> 

     <events> 
      <checkout_cart_product_add_after> 
       <observers> 
        <namespace_modulename_checkout_cart_product_add_after_observer> 
         <type>singleton</type> 
         <class>modulename/observer</class> 
         <method>my_custom_method</method> 
        </namespace_modulename_checkout_cart_product_add_after_observer> 
       </observers> 
      </checkout_cart_product_add_after> 
     </events> 

    </global> 

</config> 

文件:/应用程序/代码/本地/命名空间/ MODULENAME /型号/ Observer.php

<?php 
/** 
* Our class name should follow the directory structure of 
* our Observer.php model, starting from the namespace, 
* replacing directory separators with underscores. 
* i.e. app/code/local/SmashingMagazine/ 
*      LogProductUpdate/Model/Observer.php 
*/ 
class Namespace_Modulename_Model_Observer 
{ 
    /** 
    * Magento passes a Varien_Event_Observer object as 
    * the first parameter of dispatched events. 
    */ 
    public function my_custom_method(Varien_Event_Observer $observer) 
    { 
     // Retrieve the product being updated from the event observer 
     $product = $observer->getEvent()->getProduct(); 

     // Write a new line to var/log/product-updates.log 
     $name = $product->getName(); 
     $sku = $product->getSku(); 
     file_put_contents("/opt/lampp/htdocs/magento2/test","sdddddddss"); 
     Mage::log(
      "{$name} ({$sku}) updated", 
      null, 
      'product-updates.log' 
     ); 
    } 
} 

文件:应用程序的/ etc /模块/ Namespace_Modulename.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Namespace_Modulename> 
     <active>true</active> 
     <codePool>local</codePool> 
     </Namespace_Modulename> 
    </modules> 
</config> 

请更改config.xml中的以下行从

<class>modulename/observer</class>
让你的类

<class>Namespace_Modulename_Model_Observer</class>

+0

谢谢!这做到了!非常感谢 – user1735921

+0

@ user1735921,我很高兴听到您找到您的解决方案。我刚刚查看了您的个人资料,并了解到您对ROR有着丰富的经验。您能否请我加入skype:samumaretiya,谢谢 –

+0

通过Skype向我们发送了一个请求。 – user1735921

模型的类组(或名称空间)不正确。

您在观察员中打电话给<class>modulename/observer</class>,但modulename未定义为班级组。

<models> 
    <Namespace_Modulename>Namespace_Modulename_Model</Namespace_Modulename> 
</models> 

应该成为

<models> 
    <my_unique_class_group>Namespace_Modulename_Model</my_unique_class_group> 
</models> 

,然后你可以从工厂使用<class>my_unique_class_group/observer</class>

Magento的编制启用和代码没有被重新编译 System -> Tools -> Compilation -> Run compiation过程 和刷新缓存。