0

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

等等,没有任何运气。然后我使用了类名:

MyNamespace_MyExtension_Model_Product_Attribute_Source_MyAttribute

令我惊讶的是,这确实有效。但是,我仍然想知道使用 magento 约定的结构是要走的路——即,magento 使用:

catalog/product_attribute_source_countryofmanufacture

加载 Mage_Catalog_Model_Product_Attribute_Source_Countryofmanufacture 类

4

1 回答 1

0

在与其他模块的实现及其配置进行了一些努力之后,我终于找到了答案。

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

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

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

mynamespace_myextension/product_attribute_source_myattribute

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

于 2013-05-02T15:19:33.063 回答