2011-08-10 44 views
1

所以这是我的第一个模块,所以我觉得会有错误。但是我陷入了困境,并认为堆栈溢出社区的智慧可能会有所帮助。Magento Observer没有做太多的观察

本质上,我希望我的模块监听目录搜索索引更新的事件,并根据该更新执行一些代码。

所以我告诉Magento的认识到我的模块中:

应用程序的/ etc /模块/ Nate_SearchToFind.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Nate_SearchToFind> 
      <active>true</active> 
      <codePool>local</codePool> 
     </Nate_SearchToFind> 
    </modules> 
</config> 

然后在:应用程序/本地/内特/ SearchToFind的/ etc/config.xml中

<?xml version="1.0"?> 
<config> 
    <global> 
    <models> 
     <natesearchtofindbundle> 
      <class>Nate_SearchToFind_Bundle_Model</class> 
     </natesearchtofindbundle> 
    </models> 
    <events> 
     <catalogindex_plain_reindex_after> 
      <observers> 
       <Nate_SearchToFind_Observer> 
        <type>singleton</type> 
        <class>Nate_SearchToFind_Bundle_Model_Observer</class> 
        <method>beautify_search</method> 
       </Nate_SearchToFind_Observer> 
      </observers> 
     </catalogindex_plain_reindex_after> 
    </events> 
    </global> 
</config> 

如果是:应用程序/代码/本地/内特/ SearchT oFind /型号/ Observer.php

<?php 
class Nate_SearchToFind_Bundle_Model_Observer 
{ 
    public function __construct() 
    { 
    } 
    public function beautify_search($observer) 
    { 
     //perform function operations here 
    } 
} 

有谁发现我的代码中的一些错误(我敢肯定,他们都在那里)或我作为一个整体的方法,但我似乎无法找到他们.. 。谢谢您的帮助!

回答

4

您的观察员班级名称错误。在PHP类文件和XML观察器部分应该是Nate_SearchToFind_Model_Observer

Zend Framework中的类名遵循目录结构。我相信,您尝试使用的类前缀Nate_SearchToFind_Bundle_Model实际上是指app/code/{core,local,community}/Nate/SearchToFind/Bundle/Model中的文件。它需要更改为Nate_SearchToFind_Model以反映您当前的目录结构。

您也正在定义类前缀,但不使用它。例如,假设您将前缀与目录结构对齐,观察者部分的<class></class>部分可能会读取<class>natesearchtofindbundle/observer</class>,它将映射到Nate_SearchToFind_Model_Observer