2013-11-06 2 views
1

Я просто заканчиваю один из моих пользовательских методов доставки, который имеет несколько методов в основном методе. Поэтому я хотел, чтобы список «Разрешенные методы» отображался в разделе «Админ». Таким образом я получил ниже блока в моей System.XmlНе удается получить атрибут <source_model> для работы с System.XML в Magento

<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 не может найти мой класс?

ответ

3

Если 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, чтобы выставить правильное имя группы.

+0

Отлично! Тханкс Алан! – Thanu