我刚刚完成了我的一个自定义运输方法,它在main方法中有多种方法。所以我想让“允许的方法”列表显示在“管理”部分中。所以我在system.xml
中遇到了阻塞 <allowed_methods translate="label">
<label>Allowed Methods</label>
<frontend_type>multiselect</frontend_type>
<source_model>mycompany_shipping/carrier_somefolder_definitions_methods</source_model>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
<can_be_empty>1</can_be_empty>
</allowed_methods>
但是Magento找不到我的课,因为它总是看着“法师”而不是“本地”,它只是抛出这个错误,
include(Mage/Mycompany/Shipping/Model/Carrier/Somefolder/Definitions/Methods.php):
failed to open stream: No such file or directory in /Development/trunk/lib/Varien/Autoload.php on line 93
但我的班级是local/Mycompany/Shipping/Model/Carrier/Somefolder/Definitions/Methods.php
,班级名称是Mycompany_Shipping_Model_Carrier_Somefolder_Definitions_Methods
我想我的config.xml中可能遗漏了一些东西,所以这是我的config.xml
<global>
<models>
<mycompshipping>
<class>Mycompany_Shipping_Model</class>
</mycompshipping>
</models>
<resources>
<mycompshipping_setup>
<setup>
<module>Mycompany_Shipping</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mycompshipping_setup>
</resources>
</global>
<default>
<carriers>
<mycompanyrate>
<model>Mycompany_Shipping_Model_Carrier_Mycompanyrate</model>
</mycompanyrate>
</carriers>
</default>
为什么Magento无法找到我的班级?
答案 0 :(得分:3)
如果Magento在您的课程之前添加Mage
,则几乎总是意味着您的配置错误。
浏览您提供的信息,您的源模型配置为
mycompany_shipping/carrier_somefolder_definitions_methods
这是mycompany_shipping
的群组名称和carrier_somefolder_definitions_methods
的班级名称。这意味着Magento将通过调用
Mage::getModel('mycompany_shipping/carrier_somefolder_definitions_methods');
但是,请查看您的config.xml
<models>
<mycompshipping>
<class>Mycompany_Shipping_Model</class>
</mycompshipping>
</models>
您已将模块配置为“声明”模型组名称mycompshipping
。这意味着当您实例化模块的类时,使用表单
//instantiates as `Mycompany_Shipping_Model_Carrier_Mycompanyrate`
Mage::getModel('mycompshipping/carrier_mycompanyrate');
您需要更正system.xml
以实例化正确的源模型,或更改config.xml
以显示正确的组名。