Core Magento有Mage::getModel("api/modulename");
现在,我有一个在<api>
中使用config.xml
节点的自定义模块
喜欢:
<models>
<api>
<class>Packagename_API_Model</class>
<resourceModel>api_mysql4</resourceModel>
</api>
<api_mysql4>
<class>Packagename_API_Model_Mysql4</class>
<entities>
<apilog>
<table>bh_api_log</table>
</apilog>
</entities>
</api_mysql4>
<models>
所以现在我在magento中遇到错误
致命错误:在非对象上调用成员函数getCollection() 在第48行的code \ core \ Mage \ Adminhtml \ Block \ Api \ Grid \ Role.php中
因为我在自定义模块中使用了<api>
的相同节点标记。
我不能使用相同的节点<api>
吗?
如何在core和mycustom模块中使用相同的节点标记,以便两者都能正常工作?
答案 0 :(得分:0)
你确实不能在Magento中为同一类型的句柄使用两次相同的节点。
最佳做法实际上是说,对于自定义模块,您的句柄应始终使用packagename_modulename
作为句柄。
我们说我的模块config.xml
实际上在app/code/local/B/Enoit/etc/config.xml
,定义句柄的标准方式实际上是指示我以这样的方式编写config.xml
:
<?xml version="1.0"?>
<config>
<modules>
<B_Enoit>
<version>0.0.0.1</version>
</B_Enoit>
</modules>
<global>
<models>
<b_enoit>
<class>B_Enoit_Model</class>
<resourceModel>b_enoit_resource</resourceModel>
</b_enoit>
<b_enoit_resource>
<class>B_Enoit_Model_Resource</class>
<entities>
<some_table>
<table>b_enoit_some_table</table>
</some_table>
</entities>
</b_enoit_resource>
</models>
</global>
</config>