我为类别创建做了一个观察者,它在localhost(在Mac上)工作正常,在服务器(Linux)上运行不正常.
config.xml文件:
<?xml version="1.0"?>
<config>
<modules>
<Vmo_CategoryToAttributeOption>
<version>0.1.0</version>
</Vmo_CategoryToAttributeOption>
</modules>
<global>
<models>
<vmo_categorytoattributeoption>
<class>Vmo_CategoryToAttributeOption_Model</class>
</vmo_categorytoattributeoption>
</models>
<helpers>
<vmo_categorytoattributeoption>
<class>Vmo_CategoryToAttributeOption_Helper</class>
</vmo_categorytoattributeoption>
</helpers>
<events>
<catalog_category_prepare_save>
<observers>
<vmo_categorytoattributeoption_model_observer>
<class>vmo_categorytoattributeoption_model_observer</class>
<method>savecategoryobserver</method>
</vmo_categorytoattributeoption_model_observer>
</observers>
</catalog_category_prepare_save>
</events>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
这是local/Vmo/CategoryToAttributeOption/Model/Observer.php
class Vmo_CategoryToAttributeOption_Model_Observer extends Varien_Event_Observer
{
public function __construct()
{
}
public function savecategoryobserver($observer)
{
$event = $observer->getEvent();
$cat_model = $event -> getCategory();
$name = $cat_model->getName();
Mage::log("works: " . $name);
}
}
Run Code Online (Sandbox Code Playgroud)
这是Vmo_CategoryToAttributeOption.xml:
<?xml version="1.0"?>
<config>
<modules>
<Vaimo_CategoryToAttributeOption>
<active>true</active>
<codePool>local</codePool>
</Vaimo_CategoryToAttributeOption>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)
你知道什么是错的吗?因为在localhost上它工作得很好,但在实时服务器上却没有.
我的钱是因为你的本地机器在Windows/MAC上,服务器是linux.
在Windows/MAC上,文件名不区分大小写,在Linux上它们区分大小写.
您在事件中声明了这样的类:
<class>vmo_categorytoattributeoption_model_observer</class>
Run Code Online (Sandbox Code Playgroud)
这意味着Magento在文件中查找该类vmo/categorytoattributeoption/model/observer.php
.在Windows/MAC上它找到它,在linux上它不存在.
要解决它,请按以下方式声明模型:
<class>Vmo_CategoryToAttributeOption_Model_Observer</class>
Run Code Online (Sandbox Code Playgroud)
或者更好的是,以标准的方式
<class>vmo_categorytoattributeoption/observer</class>
Run Code Online (Sandbox Code Playgroud)