所以这是我的第一个模块,所以我认为会有错误。但我陷入困境,并认为堆栈溢出社区的智能可以提供帮助。
基本上我希望我的模块能够监听目录搜索索引更新的事件,并根据它执行一些代码。
所以我告诉magento认识我的模块:
应用的/ etc /模块/ 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
}
}
有没有人在我的代码中发现一些错误(我确定它们在那里)或作为我的整体方法,但我似乎无法找到它们......感谢您的帮助!
答案 0 :(得分:4)
您的观察者类名称错误。它应该是PHP类文件中的Nate_SearchToFind_Model_Observer
和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
。