2011-08-10 45 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