Magento 核心模块重写 class 名称
Magento core module rewrite class name
我试图重新声明一个核心模块模型class(Mage_Catalog_Model_Product)。
我创建了一个测试模块并将其命名为 First_Module 我还在其中创建了一个 config.xml 文件:
<?xml version="1.0"?>
<config>
<default>
<models>
<catalog>
<rewrite>
<product>First_Module_Model_Product</product>
</rewrite>
</catalog>
</models>
</default>
</config>
然后我创建了 app/code/local/First/Module/Model/Product.php 并在其中声明了一个 class:
class First_Module_Model_Product 扩展 Mage_Catalog_Model_Product.
Link 目录结构图:http://i58.tinypic.com/abqetz.png
我还在 app/etc/modules 中创建了 First_Module.xml 文件:
<?xml version="1.0"?>
<config>
<modules>
<First_Module>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Catalog/>
</depends>
</First_Module>
</modules>
</config>
然后我尝试 运行 测试但它不起作用:
Zend_Debug::dump( Mage::getStoreConfig('global/models/catalog') ) ->
array(1) {
["rewrite"] => array(1) {
["product"] => string(26) "First_Module_Model_Product"
}
}
$model = Mage::getModel('catalog/product');
Zend_Debug::dump(get_class($model)); // prints Mage_Catalog_Model_Product, but I wont to see First_Module_Model_Product.
我哪里错了?
在 <global>
标签而不是 <default>
标签中添加您的模型重写信息
<global>
<models>
<catalog>
<rewrite>
<product>First_Module_Model_Product</product>
</rewrite>
</catalog>
</models>
</global>
我试图重新声明一个核心模块模型class(Mage_Catalog_Model_Product)。 我创建了一个测试模块并将其命名为 First_Module 我还在其中创建了一个 config.xml 文件:
<?xml version="1.0"?>
<config>
<default>
<models>
<catalog>
<rewrite>
<product>First_Module_Model_Product</product>
</rewrite>
</catalog>
</models>
</default>
</config>
然后我创建了 app/code/local/First/Module/Model/Product.php 并在其中声明了一个 class: class First_Module_Model_Product 扩展 Mage_Catalog_Model_Product.
Link 目录结构图:http://i58.tinypic.com/abqetz.png
我还在 app/etc/modules 中创建了 First_Module.xml 文件:
<?xml version="1.0"?>
<config>
<modules>
<First_Module>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Catalog/>
</depends>
</First_Module>
</modules>
</config>
然后我尝试 运行 测试但它不起作用:
Zend_Debug::dump( Mage::getStoreConfig('global/models/catalog') ) ->
array(1) {
["rewrite"] => array(1) {
["product"] => string(26) "First_Module_Model_Product"
}
}
$model = Mage::getModel('catalog/product');
Zend_Debug::dump(get_class($model)); // prints Mage_Catalog_Model_Product, but I wont to see First_Module_Model_Product.
我哪里错了?
在 <global>
标签而不是 <default>
标签中添加您的模型重写信息
<global>
<models>
<catalog>
<rewrite>
<product>First_Module_Model_Product</product>
</rewrite>
</catalog>
</models>
</global>