加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Magento自定义模块Observer无法正常工作

发布时间:2020-12-13 15:56:24 所属栏目:PHP教程 来源:网络整理
导读:我已经在app / code / local / mycustom / GeoLocation中创建了magento中的自定义模块,因为我想创建一个观察者,所以我已经按照了很多教程,最后我创建了下面的代码,在每个页面加载时调用它magento,但它仍然没有调用我的observer.php自定义模块.我是magento的
我已经在app / code / local / mycustom / GeoLocation中创建了magento中的自定义模块,因为我想创建一个观察者,所以我已经按照了很多教程,最后我创建了下面的代码,在每个页面加载时调用它magento,但它仍然没有调用我的observer.php自定义模块.我是magento的新手所以请帮助我.

config.xml中

<config>
    <global>
        <events>
            <cms_page_render>
                <observers>
                    <mycustom_GeoLocation_Model_observer>
                        <type>singleton</type>
                        <class>mycustom_GeoLocation_Model_Observer</class>
                        <method>getGeoLocation</method>
                    </mycustom_GeoLocation_Model_observer>
                </observers>
            </cms_page_render>
        </events>
    </global>
</config>

mycustomGeolocation_Event.xml用于启用模块

<config>
    <modules>
        <mycustom_GeoLocation>
            <active>true</active>
            <codepool>local</codepool>
        </mycustom_GeoLocation>
    </modules> 
</config>

最后我的observer.php出现在我的自定义模块的模型中

class mycustom_GeoLocation_Model_Observer {

   public function __construct()
   {
   }

    public function getGeoLocation(Varien_Event_Observer $observer) {   // current layout

         $event = $observer->getEvent();
         $cms_page = $event->getPage();  
         echo "called";
         exit;
         return $this;

    }
}

解决方法

模块中存在很多问题.

作为观察者,die()可能不起作用.使用Magento日志打印来检查观察者是否工作

模块NameSpace文件夹名称应以大写字母mycustom以Mycustom开头.您还需要更改类名reslusctive代码.

更新:

config.xml代码:

<?xml version="1.0"?>
<config>
  <modules>
    <Mycustom_GeoLocation>
      <version>0.1.0</version>
    </Mycustom_GeoLocation>
  </modules>
  <global>
    <models>
      <geolocation>
        <class>Mycustom_GeoLocation_Model</class>
      </geolocation>
    </models>
    <events>
      <cms_page_render> 
        <observers>
          <cms_page_render_handler> 
            <type>model</type> 
            <class>geolocation/observer</class> <!-- observers class alias -->
            <method>getGeoLocation</method>  
           </cms_page_render_handler>
        </observers>
      </cms_page_render>
    </events>
  </global>
</config>

你可以在github获得完整的模块

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读