【问题标题】:Can't call method in Observer. Magento 1.8无法在观察者中调用方法。 Magento 1.8
【发布时间】:2014-04-23 09:49:06
【问题描述】:

这是我如何描述 sales_order_place_after 事件

    <models>
        <chatattributes>
            <class>Rockstar_Chatattributes_Model</class>
        </chatattributes>
        <chatattributes>
            <class>Rockstar_Chatattributes_Model</class>
            <resourceModel>chatattributes_resource</resourceModel>
        </chatattributes>
        <chatattributes_resource>
            <class>Rockstar_Chatattributes_Model_Resource</class>
        </chatattributes_resource>
    </models>
</global>
    <frontend>
        <events>
            <sales_order_place_after>
                <observers>
                    <place_order>
                        <type>singleton</type>
                        <class>chatattributes/observer</class>
                        <method>placeOrder</method>
                    </place_order>
                </observers>
            </sales_order_place_after>
            <sales_quote_item_set_product>
                <observers>
                    <quote_item>
                        <type>singleton</type>
                        <class>chatattributes/observer</class>
                        <method>setQuoteItem</method>
                    </quote_item>
                </observers>
            </sales_quote_item_set_product>
            <add_to_cart_before>
                <observers>
                    <add_to_cart>
                        <type>singleton</type>
                        <class>chatattributes/observer</class>
                        <method>addToCart</method>
                    </add_to_cart>
                </observers>
            </add_to_cart_before>
        </events>
    </frontend>

这是我的 Observer.php (Rockstar/Chatattributes/Model/Observer.php)

<?php
class Rockstar_Chatattributes_Model_Observer
{
    public function placeOrder($observer) {
        var_dump('Never Ever change Magento Core code'); die;
    }

    public function setQuoteItem($observer) {
        var_dump('quote item'); die;
    }

    public function addToCart($observer) {
        var_dump('added to cart'); die;
    }
}

所以,当我下订单时,我想在我的观察者中调用方法“placeOrder”......但我不能......我已经删除了 VAR 文件夹并使用 777 权限再次创建它。

【问题讨论】:

  • 你在这里写了更多的自定义观察者方法吗?
  • 是的,我已经更新了问题......请看一下
  • 不能调用两个自定义观察者方法。验证此帖子链接chillydraji.wordpress.com/2014/03/03/…
  • 是的,关于订单的链接很好。但我对 Observer 有疑问。当我下订单或将其添加到购物车时 var_dump 不起作用(请参阅我添加的新事件)。
  • 关于自定义方法....您能告诉我如何在一个观察者中创建自定义方法并在某些事件中调用它们吗?...

标签: magento magento-1.7 magento-1.8


【解决方案1】:

//放在全局标签下而不是前端标签下

<global>

        <events>
            <sales_order_place_after>
                <observers>
                    <place_order>
                        <type>singleton</type>
                        <class>chatattributes/observer</class>
                        <method>placeOrder</method>
                    </place_order>
                </observers>
            </sales_order_place_after>
        </events>

</global>

【讨论】:

  • 您是否还在 Observer.php 上使用 CompanyName_ExtensionName 而不是 Rockstar_Chatattributes ...我认为.. 不是。但如果是,那将是一个非常小的错误
  • 我试图展示示例...我正在使用 Rockstar_Chatattributes
  • btw...在 magento 1.7 中,当我在 中覆盖它们时,观察者事件工作正常......不在 节点中
【解决方案2】:

在您的 XML 中,您正在寻找具有“chatattributes”模型的 Observer 类。 该模型的简写需要在 XML 中定义并与模型类相关联。 对于您提供的模型,XML 模型定义如下所示:

   <global>
     <models>
      <chatattributes>
       <class>CompanyName_ExtensionName_Model</class>
      </chatattributes>
     </models>
    </global>

【讨论】:

  • 你好莱泽,谢谢你的回答。我已经用模型节点更新了我的问题。请检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多