Magento Observer не слишком много наблюдает - PullRequest
1 голос
/ 11 августа 2011

Так что это мой первый модуль, поэтому я подумал, что будут ошибки. Но я застрял и подумал, что интеллект сообщества переполнения стека может помочь.

По сути, я хочу, чтобы мой модуль прослушивал событие обновления индекса поиска в каталоге и выполнял некоторый код на его основе.

Итак, я сказал magento распознать мой модуль в:

приложение / и т.д. / модули / 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
    }
}

Кто-нибудь замечает некоторые ошибки в моем коде (я уверен, что они там есть) или как мой подход в целом, но я не могу их найти ... Спасибо за помощь!

1 Ответ

4 голосов
/ 11 августа 2011

Ваше имя класса наблюдателя неверно. Он должен быть 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, если вы выровняете префикс с вашей структурой каталогов.

...