Не могу получить атрибут для работы на System.xml в Magento

StackOverflow https://stackoverflow.com/questions/19825164

  •  05-07-2022
  •  | 
  •  

Вопрос

Я просто заканчиваю один из моих пользовательских методов доставки, который имеет несколько методов в основном методе. Поэтому я хотел, чтобы список «разрешенных методов» отображался в разделе администратора. Итак, я получил ниже блока в своей системе. 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