1

メインの配送方法の中に複数の配送方法があるカスタム配送方法の 1 つを完成させようとしています。そのため、「許可されたメソッド」リストを管理セクションに表示したかったのです。だから私は私の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 は常に "local" ではなく "Mage" を検索するため、私のクラスを見つけることができません。このエラーがスローされるだけです。

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 がクラスを見つけられない理由はありますか?

4

1 に答える 1

3

MagentoMageがクラスの先頭に追加される場合、ほとんどの場合、構成に誤りがあることを意味します。

あなたが提供した情報を一瞥すると、ソースモデルは次のように構成されています

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グループ名を公開するように変更する必要があります。

于 2013-11-06T23:49:02.600 に答える