Magento 1.9 扩展核心 class
Magento 1.9 extend core class
我想扩展核心产品 class 并添加一些功能。
我制作了文件app\code\local\ast\Catalog\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<ast_Catalog>
<version>0.0.1</version>
</ast_Catalog>
</modules>
<global>
<models>
<catalog>
<rewrite>
<product>ast_Catalog_Model_Product</product>
</rewrite>
</catalog>
</models>
</global>
</config>
第二个文件app\etc\modules\ast_Catalog.xml
<?xml version="1.0"?>
<config>
<modules>
<ast_Catalog>
<active>true</active>
<codePool>local</codePool>
</ast_Catalog>
</modules>
</config>
和文件 Product.php 在 app\code\local\ast\Catalog\Model\
class ast_Catalog_Model_Product extends Mage_Catalog_Model_Product
{
public function makeBlue()
{
echo 'makeBlue';
}
}
现在,当我尝试在 app\design\frontend\ast\default\template\catalog\product\view.phtml 文件中使用我的函数 makeBlue() 时
<div class="product-shop">
<?php
....
echo 'hello';
echo $this->makeBlue();
....
?>
我遇到以下错误:
Invalid method Mage_Catalog_Block_Product_View::makeBlue(Array
(
)
)
#0 I:\WWW\Sklep_www4\app\design\frontend\ast\default\template\catalog\product\view.phtml(45): Varien_Object->__call('makeBlue', Array)
.......
怎么了?
您在创建模块时没有遵守命名约定。模块命名空间和模块名称应以大写字母开头,请尝试将 xml、class 名称和文件夹名称
中的 "ast" 更改为 "Ast"
问题是我扩展了 class ast_Catalog_Model_Product 而不是 Mage_Catalog_Block_Product_View。更改后将 class 扩展为 Mage_Catalog_Block_Product_View 一切正常。
我想扩展核心产品 class 并添加一些功能。
我制作了文件app\code\local\ast\Catalog\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<ast_Catalog>
<version>0.0.1</version>
</ast_Catalog>
</modules>
<global>
<models>
<catalog>
<rewrite>
<product>ast_Catalog_Model_Product</product>
</rewrite>
</catalog>
</models>
</global>
</config>
第二个文件app\etc\modules\ast_Catalog.xml
<?xml version="1.0"?>
<config>
<modules>
<ast_Catalog>
<active>true</active>
<codePool>local</codePool>
</ast_Catalog>
</modules>
</config>
和文件 Product.php 在 app\code\local\ast\Catalog\Model\
class ast_Catalog_Model_Product extends Mage_Catalog_Model_Product
{
public function makeBlue()
{
echo 'makeBlue';
}
}
现在,当我尝试在 app\design\frontend\ast\default\template\catalog\product\view.phtml 文件中使用我的函数 makeBlue() 时
<div class="product-shop">
<?php
....
echo 'hello';
echo $this->makeBlue();
....
?>
我遇到以下错误:
Invalid method Mage_Catalog_Block_Product_View::makeBlue(Array
(
)
)
#0 I:\WWW\Sklep_www4\app\design\frontend\ast\default\template\catalog\product\view.phtml(45): Varien_Object->__call('makeBlue', Array)
.......
怎么了?
您在创建模块时没有遵守命名约定。模块命名空间和模块名称应以大写字母开头,请尝试将 xml、class 名称和文件夹名称
中的 "ast" 更改为 "Ast"问题是我扩展了 class ast_Catalog_Model_Product 而不是 Mage_Catalog_Block_Product_View。更改后将 class 扩展为 Mage_Catalog_Block_Product_View 一切正常。