Question

Je termine juste l'une de mes méthodes d'expédition personnalisées, qui contient plusieurs méthodes dans la méthode principale. Je voulais donc que la liste des "méthodes autorisées" apparaisse dans la section Admin. Alors je suis arrivé en dessous du bloc dans mon système.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>

Mais Magento ne trouve pas ma classe car elle semble toujours dans "Mage" au lieu de "local", il lance simplement cette erreur,

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

Mais ma classe est à local/Mycompany/Shipping/Model/Carrier/Somefolder/Definitions/Methods.php Et le nom de classe est Mycompany_Shipping_Model_Carrier_Somefolder_Definitions_Methods

Je pense que j'ai peut-être manqué quelque chose dans ma config.xml, alors voici ma 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>

Des idées pourquoi Magento ne peut pas trouver ma classe?

Était-ce utile?

La solution

Si Magento s'adresse Mage À vos cours, cela signifie presque toujours que vous avez une erreur de configuration.

Jetant un coup d'œil aux informations que vous avez fournies, votre modèle source est configuré comme

mycompany_shipping/carrier_somefolder_definitions_methods

C'est un nom de groupe de mycompany_shipping et un nom de classe de carrier_somefolder_definitions_methods. Cela signifie que Magento instanciera votre modèle source avec un appel à

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

Cependant, en regardant votre config.xml

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

Vous avez configuré votre module pour "réclamer" le nom du groupe de modèle mycompshipping. Cela signifie que lorsque vous instanciez les cours de votre module, vous utilisez le formulaire

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

Vous devez corriger votre system.xml Pour instancier le modèle source correct, ou changer config.xml Pour exposer le bon nom de groupe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top