我正在尝试为我的magento产品添加一个属性,该属性依赖于自定义功能来提供此属性的选项。
为此,我在MyNamespace / MyExtension / Model / Product / Attribute / Source / MyAttribute
中创建了一个源模型然后我尝试通过为此属性设置source_model来告诉Magento使用我的模型,当我不断收到以下错误时:
Source model "mynamespace/myextension_product_attribute_source_myattribute" not found for attribute "vendor"
我相信我尝试了所有可能的组合,例如:
myextension/product_attribute_source_myattribute
mynamespace_myextension/product_attribute_source_myattribute
mynamespace/myextension_model_product_attribute_source_myattribute
等等,没有任何运气。然后我使用了classname:
MyNamespace_MyExtension_Model_Product_Attribute_Source_MyAttribute
令我惊讶的确实有效。但是,我仍然想知道使用magento约定的结构是什么 - 即magento使用:
catalog/product_attribute_source_countryofmanufacture
加载Mage_Catalog_Model_Product_Attribute_Source_Countryofmanufacture class
答案 0 :(得分:0)
在经历了其他模块及其配置的实施后,我终于找到了答案。
模块配置文件定义模型的基本命名空间,在该命名空间下可以加载多个模型类:
<global>
<models>
<mynamespace_myextension>
<class>MyNamespace_MyExtension_Model</class>
</mynamespace_myextension>
</models>
</global>
现在,在加载模块时,在斜杠之前声明用作命名空间的xml定义,然后省略类标记中已经给出的命名空间并添加模型的特定结构:
mynamespace_myextension/product_attribute_source_myattribute
您可以在同一名称空间下加载其他模型,而无需将它们专门添加到您的xml