1

これは私の最初のモジュールなので、エラーがあると思いました。しかし、私は立ち往生しており、スタック オーバーフロー コミュニティの知性が助けになると考えました。

基本的に、モジュールがカタログ検索インデックス更新のイベントをリッスンし、それに基づいてコードを実行するようにしたいと考えています。

だから私はmagentoに私のモジュールを認識するように言いました:

app/etc/modules/Nate_SearchToFind.xml

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

次に: app/local/Nate/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>

次に: app/code/local/Nate/SearchToFind/Model/Observer.php

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

誰かが私のコードにいくつかのエラーを見つけますか (私はそれらがそこにあると確信しています)、または私のアプローチ全体として、しかし私はそれらを見つけることができないようです...助けてくれてありがとう!

4

1 に答える 1

4

オブザーバー クラス名が間違っています。これはNate_SearchToFind_Model_Observer、PHP クラス ファイルと XML オブザーバー セクションにある必要があります。

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

于 2011-08-11T07:09:22.967 に答える