質問

メインメソッド内に複数のメソッドがあるカスタム配送方法の1つを完成させています。そこで、adminセクションに「許可メソッド」リストが表示されたかったのです。だから私は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は私のクラスを見つけることができません。なぜなら、それは常に「ローカル」ではなく「メイジ」で見えるので、このエラーを投げるだけで、

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が私のクラスを見つけることができない理由はありますか?

役に立ちましたか?

解決

Magentoが前払いの場合 Mage あなたのクラスにとって、それはほとんど常にあなたが誤解を持っていることを意味します。

あなたが提供した情報をちらっと見て、あなたのソースモデルはとして構成されています

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 適切なグループ名を公開します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top