Domanda

Sto solo finendo uno dei miei metodi di spedizione personalizzati, che ha più metodi all'interno del metodo principale. Quindi volevo avere l'elenco di "metodi consentiti" per visualizzare nella sezione amministratore. Quindi sono sceso al blocco nel mio sistema.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>

Ma Magento non riesce a trovare la mia classe perché sembra sempre nel "mago" invece di "locale", basta lanciare questo errore,

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

Ma la mia classe è a local/Mycompany/Shipping/Model/Carrier/Somefolder/Definitions/Methods.php E il nome della classe è Mycompany_Shipping_Model_Carrier_Somefolder_Definitions_Methods

Penso che mi sia mancato qualcosa nella mia config.xml, quindi ecco la mia 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>

Qualche idea per cui Magento non riesce a trovare la mia classe?

È stato utile?

Soluzione

Se Magento si prepara Mage Alle tue lezioni, significa quasi sempre che hai una configurazione errata.

Alzando un'occhiata alle informazioni fornite, il modello di origine è configurato come

mycompany_shipping/carrier_somefolder_definitions_methods

Questo è un nome di gruppo di mycompany_shipping e un nome di classe di carrier_somefolder_definitions_methods. Ciò significa che Magento istanzierà il tuo modello di origine con una chiamata a

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

Tuttavia, guardando il tuo config.xml

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

Hai configurato il tuo modulo per "rivendicare" il nome del gruppo modello mycompshipping. Ciò significa che quando istanzia le classi del tuo modulo, usi il modulo

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

Devi correggere il tuo system.xml Per istanziare il modello di origine corretto o cambiare config.xml per esporre il nome del gruppo giusto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top