Magento:在尝试挂钩aschroder_smtppro_before_send事件后,我无法让观察者开火;任何想法?

时间:2015-07-02 21:28:52

标签: magento magento-1.9.1

我现在正在开展一个小项目,为 Magento CE 1.9.x Aschroder的 SMTPPro 实施一个简单的黑名单邮件扩展。我一直处于几个不同的方向,起初认为我将不得不覆盖getTemplateSubject(),并可能还有一些其他方法,以拦截外发电子邮件,因为我不相信那个(sans- SMTPPro )Magento有任何在发送电子邮件时触发的事件。作为旁注,非常感谢我对此帖中可能存在的任何误解进行更正。

所以我继续前进并专注于绑定到 SMTPPro aschroder_smtppro_before_send事件以尝试触发我的代码。我想最终检查收件人地址,查找子字符串,并且可以在将来的某个时间点匹配该条件的任何电子邮件(可能向管理员发送消息)。但是现在,我甚至无法让代码给我一个var_dump,只是知道它甚至会被解雇。我确实尝试将代码绑定到一个不同的事件,即一个点(即controller_action_predispatch,它以我所投注的方式打破了网站),但我不知道在哪里让我留下了什么现在错了。除非我看到的文档不正确, SMTPPro 没有定义或触发事件。

所以这就是我所做的。

$ INST_HOME / app / code / local / Myorganization 中的

我创建了树:

  

drwxrwsr-x 3 dgetsman src 4096 Jul 1 03:38 Core.bak drwxrwsr-x 2   scriptuser src 4096 7月2日20:57等drwxrwsr-x 2 scriptuser src 4096   7月1日01:24助手drwxrwsr-x 2 dgetsman src 4096 7月2日20:42   模型

     

Emailblacklist / Core.bak:总计4 drwxrwsr-x 2 dgetsman src 4096 Jul   2 20:30模特

     

Emailblacklist / Core.bak /型号:共4个   -rw-rw-r-- 1 dgetsman src 921 Jul 1 03:41 Email.php

     

Emailblacklist / etc:总共4个   -rw-rw-r-- 1 scriptuser src 998 Jul 2 20:57 config.xml

     

Emailblacklist / Helper:总共4个   -rw-rw-r-- 1 scriptuser src 86 Jul 1 01:24 Data.php

     

Emailblacklist / Model:共4个   -rw-rw-r-- 1 dgetsman src 201 Jul 2 02:05 Observer.php

请注意, Core.bak 只包含一些我正在尝试通过覆盖getTemplateSubject()方法进行此操作的残留代码。

Emailblacklist / etc / config.xml 的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
  <config>
    <modules>
        <Myorganization_Emailblacklist>
            <version>0.1.0</version>
        </Myorganization_Emailblacklist>
    </modules>
    <global>
      <helpers>
        <emailblacklist>
            <class>Myorganization_Emailblacklist_Helper</class>
        </emailblacklist>
      </helpers>
      <models>
        <myorganization_emailblacklist>
          <class>Myorganization_Emailblacklist_Model</class>
        </myorganization_emailblacklist>
      </models>
      <events>
        <!-- for debugging purposes
             <controller_action_predispatch> -->
        <aschroder_smtppro_before_send>
          <observers>
            <myorganization_emailblacklist>
              <class>myorganization_emailblacklist/observer</class>
              <method>watchEmails</method>
            </myorganization_emailblacklist>
          </observers>
        </aschroder_smtppro_before_send>
        <!-- debugging: </controller_action_predispatch> -->
      </events>
    </global>
  </config>

Emailblacklist / Helper / Data.php 的内容如下:

<?php
class Uselite_Emailblacklist_Helper_Data extends Mage_Core_Helper_Abstract {

}

Emailblacklist / Model / Observer.php 的内容如下:

<?php
class Uselite_Emailblacklist_Model_Observer {
    public function watchEmails(Varien_Event_Observer $observer) {
        $order = $observer->getEvent();

        die(var_dump($order));

    }
}

从前面提到的代码可以假设,我希望此时只是为了获得$order的转储。绝对有用的将是非常感谢。感谢您的时间和考虑。如果我忘记在此处添加任何有助于故障排除过程的信息,也请随时告诉我。

1 个答案:

答案 0 :(得分:0)

IN config.xml你可以试试吗

<events>
   <aschroder_smtppro_before_send>
       <observers>
          <myorganization_emailblacklist_model_observer>
               <type>singleton</type>
               <class>Myorganization_Emailblacklist_Model_Observer</class>
                <method>watchEmails</method>
           </myorganization_emailblacklist_model_observer>
        </observers>
    </aschroder_smtppro_before_send>
</events>