0

したがって、登録前のディスパッチイベントへのフックを作成しようとしているだけです。これは私がこれまでに持っているものです:

config.xml:

<events>
  <controller_action_predispatch_customer_account_createpost>
    <observers>
      <mymodulename>
        <class>mymodulename/observer</class>
        <method>hookToAccountCreationBefore</method>
      </mymodulename>
    </observers>
  </controller_action_predispatch_customer_account_createpost>
</events>

そしてオブザーバー:

Model/Observer.php :

public function hookToAccountCreationBefore($observer) {
  die('getting here');
}

そこで、登録を行ったところ、イベント ログで controller_action_predispatch_customer_account_createpost イベントが呼び出されているのに、関数が呼び出されていません。

助けてください!

アップデート:

以下の答えは私にとって完璧に機能しました。ただし、 $observer->getEvent()->getCustomer() は、別のオブザーバーがまったく同じイベントをオーバーライドしていても、NULL を取得しており、これは正常に機能します。他の拡張機能のオブザーバー構成を一時的にコメントアウトしようとしましたが、まだ空です。何か案は?

4

2 に答える 2

3

config.xml で、次のこともできます

config.xml:

<global>
    <models>
        <mymodulename>
            <class>MyNamespace_MyModuleName_Model</class>
        </mymodulename>
    </models>
    <events>
        <controller_action_predispatch_customer_account_createpost>
            <observers>
                <mymodulename>
                    <type>singleton</type>
                    <class>mymodulename/observer</class>
                    <method>hookToAccountCreationBefore</method>
                </mymodulename>
            </observers>
        </controller_action_predispatch_customer_account_createpost>
    </events>
</global>

また

<global>
    <events>
        <controller_action_predispatch_customer_account_createpost>
            <observers>
                <mymodulename>
                    <type>singleton</type>
                    <class>MyNamespace_MyModuleName_Model_Observer</class>
                    <method>hookToAccountCreationBefore</method>
                </mymodulename>
            </observers>
        </controller_action_predispatch_customer_account_createpost>
    </events>
</global>
于 2013-05-07T15:52:50.193 に答える
0

次のイベントで試してみてください

customer_register_success
于 2014-10-10T08:20:45.730 に答える