为magento属性设置源模型的正确结构是什么

时间:2013-05-02 09:57:04

标签: magento model attributes

我正在尝试为我的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

1 个答案:

答案 0 :(得分:0)

在经历了其他模块及其配置的实施后,我终于找到了答案。

模块配置文件定义模型的基本命名空间,在该命名空间下可以加载多个模型类:

<global>
    <models>
        <mynamespace_myextension>
            <class>MyNamespace_MyExtension_Model</class>
        </mynamespace_myextension>
    </models>
</global>

现在,在加载模块时,在斜杠之前声明用作命名空间的xml定义,然后省略类标记中已经给出的命名空间并添加模型的特定结构:

mynamespace_myextension/product_attribute_source_myattribute

您可以在同一名称空间下加载其他模型,而无需将它们专门添加到您的xml