【问题标题】:Magento 1.7 Observer MethodMagento 1.7 观察者方法
【发布时间】:2015-07-05 19:51:45
【问题描述】:

我相信下面的代码存在配置问题,模块已激活,但观察者没有被事件触发。谁能发现问题?

app/etc/modules/James_CoreProductCheck.xml

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

app/code/local/James/CoreProductCheck/etc/config.xml

<?xml version="1.0"?>
<config>
 <modules>
   <James_CoreProductCheck>
     <version>0.0.1</version>
   </James_CoreProductCheck>
 </modules>
<global>
<models>
  <james_coreproductcheck>
    <class>James_CoreProductCheck_Model</class>
  </james_coreproductcheck>
</models>
  <events>
    <checkout_cart_product_add_after>
      <observers>
        <james_coreproduct_check_model_observer>
          <type>singleton</type>
          <class>James_CoreProductCheck_Model_Observer</class>
          <method>check</method>
        </james_coreproduct_check_model_observer>
      </observers>
    </checkout_cart_product_add_after>
  </events>
</global>
</config>

app/code/local/James/CoreProductCheck/Model/Observer.php

class James_CoreProductCheck_Model_Observer {

   public function check(Varien_Event_Observer $observer) {

      Mage::log('Yet another product added', null, 'product-updates.log');

 }
}

【问题讨论】:

  • 1.使用相同的观察者检查其他扩展 2. 清除缓存
  • 这似乎是一个缓存问题。请尝试刷新缓存存储并尝试

标签: php magento


【解决方案1】:

试试这个。

     <events>
        <checkout_cart_product_add_after>
            <observers>
                <sales_quote_add_item>
                    <class>James_CoreProductCheck_Model_Observer</class>
                    <method>check</method>
                </sales_quote_add_item>
            </observers>
        </checkout_cart_product_add_after>  
    </events>

确保清除缓存。谢谢:)

【讨论】:

  • 是唯一需要通过管理面板刷新缓存的地方吗?
  • 如果你启用了服务器缓存,也需要清除它。但在大多数情况下,它是有效的。您也可以删除 var/cache 文件夹。
【解决方案2】:

尝试不同的模块名称而不是 CoreProductCheck。

因此您的代码将如下所示,并且可以完美运行。

app/code/local/James/Prodcheck/etc/config.xml

<?xml version="1.0"?>
<config>
  <modules>
    <James_Prodcheck>
      <version>1.0.0</version>
    </James_Prodcheck>
  </modules>
  <global>
       <events>
      <checkout_cart_product_add_after> 
        <observers>
          <checkout_cart_product_add_after> 
            <type>singleton</type> 
            <class>prodcheck/observer</class> 
            <method>check</method>  
            <args></args> 
          </checkout_cart_product_add_after>
        </observers>
      </checkout_cart_product_add_after>
    </events>
  </global>
</config> 

和观察者文件 app/code/local/James/Prodcheck/Model/Observer.php

class James_Prodcheck_Model_Observer
{

            public function check(Varien_Event_Observer $observer)
            {
                //Your code stuff.
            }

}

【讨论】:

  • 这不起作用。为什么模块名称会有所不同?
  • 我在检查后发布了代码。这段代码对我来说很好用。试试上面的代码,刷新你的magento缓存。然后会调用观察者。
  • CoreProductCheck,在这个 Magento 中可能会遇到自动加载类 CoreProduct 的问题。因此,最好不要将名称与核心模块保持相同。
  • 我也更新了我的答案。更新了 config.xml 文件试试这个代码。
  • 更改模块名称和相应文件似乎不起作用。还尝试使用您的示例,但仍然没有运气
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多