Frage

Ich beende gerade eine meiner benutzerdefinierten Versandmethoden, die mehrere Methoden innerhalb der Hauptmethode enthält. Daher wollte ich "erlaubte Methoden" -Liste haben, um im Abschnitt Admin zu sehen sind. Also bin ich unter Block in meinem System.xml gekommen

 <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>

Aber Magento kann meine Klasse nicht finden, weil sie immer in "Magier" anstelle von "lokal" aussieht. Sie wirft einfach diesen Fehler.

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

Aber meine Klasse ist bei local/Mycompany/Shipping/Model/Carrier/Somefolder/Definitions/Methods.php Und der Klassenname ist Mycompany_Shipping_Model_Carrier_Somefolder_Definitions_Methods

Ich denke vielleicht, ich habe etwas in meiner config.xml verpasst, also hier ist meine 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>

Irgendwelche Ideen, warum Magento meine Klasse nicht finden kann?

War es hilfreich?

Lösung

Wenn Magento vorbereitet Mage In Ihren Klassen bedeutet dies fast immer, dass Sie eine Missverständnis haben.

Blick auf die Informationen, die Sie zur Verfügung gestellt haben, ist Ihr Quellmodell konfiguriert als

mycompany_shipping/carrier_somefolder_definitions_methods

Das ist ein Gruppenname von mycompany_shipping und ein Klassenname von carrier_somefolder_definitions_methods. Dies bedeutet, dass Magento Ihr Quellmodell mit einem Anruf an instanziiert

Mage::getModel('mycompany_shipping/carrier_somefolder_definitions_methods');

Betrachten Sie jedoch Ihre config.xml

<models>
    <mycompshipping>
        <class>Mycompany_Shipping_Model</class>
    </mycompshipping>
</models>

Sie haben Ihr Modul so konfiguriert, dass Sie den Modellgruppennamen "beanspruchen" mycompshipping. Dies bedeutet, wenn Sie die Klassen Ihres Moduls instanziieren, verwenden Sie das Formular

//instantiates as `Mycompany_Shipping_Model_Carrier_Mycompanyrate`
Mage::getModel('mycompshipping/carrier_mycompanyrate');

Sie müssen Ihre korrigieren system.xml Um das richtige Quellmodell zu instanziieren oder zu ändern config.xml Um den richtigen Gruppennamen aufzudecken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top