2011-08-10 16 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にマップされます。

関連する問題