Magento Observer не особо наблюдает

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

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

Поэтому я сказал 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
    }
}

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


person Nathaniel Wendt    schedule 10.08.2011    source источник


Ответы (1)


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

person Nick    schedule 11.08.2011