1

Magentoでイベントオブザーバーを設定しようとしています。私が観察しているイベントは発生しますが、私のメソッドは実行されないようです。私のモジュールは登録されており、すべて問題ありません。

オブザーバーを定義するconfig.xmlは次のとおりです

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <models>
            <technoberglink>
                <class>
                    Technoberg_Link_Model
                </class>
            </technoberglink>
        </models>
    </global>
    <frontend>
        <events>
            <cms_page_render><!-- sales order place after -->
                <observers>
                    <Technoberg_Link_Observer>
                        <type>
                            singleton
                        </type>
                        <class>
                            Technoberg_Link_Model_Observer
                        </class>
                        <method>
                            start_link
                        </method>
                    </Technoberg_Link_Observer>
                </observers>
            </cms_page_render>
        </events>
    </frontend>
</config>

Technoberg_Link_Model_Observerのクラスを別のクラスに変更すると、ファイルが見つからなかったことを示すいくつかのエラーがログに記録されるため、イベントが発生したことがわかりました。

これが私のObserver.phpファイルです

class Technoberg_Link_Model_Observer {

function __construct(){

}


public function start_link($e){

    Mage::log("Dummy code executed");
    return $this;

}
}

なぜ私のメソッドが実行されないのかわからないので、どんな助けも素晴らしいでしょう!

4

3 に答える 3

4

それを私が直した。問題ではなかったすべての空白をチェックしました。

イベントをグローバルの下に置き、オブザーバー内のタグを、使用しているクラスと同じ名前に変更しました。これで問題は解決しました。したがって、XMLは

    <global>
      <events>
        <cms_page_render>
            <observers>
                <Technoberg_Link_Model_Observer> <!-- TAG INSIDE OBSERVER -->
                    <type>singleton</type>
                    <class>Technoberg_Link_Model_Observer</class>
                    <method>start_link</method>
                </Technoberg_Link_Observer>
            </observers>
        </cms_page_render>
      </events>
    </global>

Magentoは、命名規則に関しては非常に厳格だと思います=)助けてくれてありがとう!

于 2012-04-19T13:54:52.447 に答える
0
<events>
            <cms_page_render><!-- sales order place after -->
                <observers>
                    <Technoberg_Link_Observer>
                        <type>
                            singleton
                        </type>
                        <class>
                            Technoberg_Link_Model_Observer
                        </class>
                        <method>
                            start_link
                        </method>
                    </Technoberg_Link_Observer>
                </observers>
            </cms_page_render>
        </events>

xmlのこの部分を

<global> </global> 

フロントエンドタグではなくタグ

キャッシュをクリアしてリロードする

于 2012-04-17T12:00:47.113 に答える
0

次のconfig.xmlを試してください...空白の問題だと思います...

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <models>
            <technoberglink>
                <class>Technoberg_Link_Model</class>
            </technoberglink>
        </models>
    </global>
    <frontend>
        <events>
            <cms_page_render>
                <observers>
                    <technoberglink>
                        <type>singleton</type>
                        <class>Technoberg_Link_Model_Observer</class>
                        <method>start_link</method>
                    </technoberglink>
                </observers>
            </cms_page_render>
        </events>
    </frontend>
</config>
于 2012-04-17T21:50:37.893 に答える