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 に答える