2013-03-11 5 views
1

Я пытаюсь создать простой модуль для magento. Я создал свой контроллер, мои маршруты, но по какой-то причине я не могу получить доступ к моей модели. Насколько я знаю, он даже не загружен.Magento Model не загружается

У меня нет сообщения об ошибке, и объект модели не создается.

Что может быть причиной этого?

Вот некоторая информация:

Контроллер:

class MyVendor_MyModule_IndexController extends Mage_Core_Controller_Front_Action 
{ 

    public function pingAction(){ 

     $model = Mage::getModel('mymodule/mymodule');  
     echo "<pre>" . print_r($model->load(1),true); 

    } 
} 

вид модели дерева:

MyVendor 
-MyModule 
-- controllers 
---- IndexController.php 
-- Model 
---- Mysql4 
-------- MyModule.php 
-------- MyModule 
---------------- Collection.php 
---- MyModule.php 
-- etc 
---- config.xml 

config.xml

<?xml version="1.0" encoding="UTF-8"?> 

<config> 
    <modules> 
     <MyVendor_MyModule> 
      <version>0.0.1</version> 
     </MyVendor_MyModule> 
    </modules> 
    <frontend> 
     <routers> 
      <mymodule> 
       <use>standard</use> 
       <args> 
        <module>MyVendor_MyModule</module> 
        <frontName>mymodule</frontName> 
       </args> 
      </mymodule> 
     </routers> 
    </frontend> 
    <global> 
     <models> 
      <mymodule> 
       <class>MyVendor_MyModule_Model</class> 
       <resourceModel>mymodule_mysql4</resourceModel> 
      </mymodule> 
      <mymodule_mysql4> 
       <class>MyVendor_MyModule_Model_Mysql4</class> 
       <entities> 
        <mymodule> 
         <table>mymodule_table</table> 
        </mymodule> 
       </entities> 
      </mymodule_mysql4> 
     </models> 
     <resources> 
        <mymodule_setup> 
         <setup> 
           <module>MyVendor_MyModule</module> 
         </setup> 
         <connection> 
           <use>core_setup</use> 
         </connection> 
        </mymodule_setup> 
        <mymodule_setup> 
         <connection> 
           <use>core_write</use> 
         </connection> 
        </mymodule_setup> 
        <mymodule_setup> 
         <connection> 
           <use>core_read</use> 
         </connection> 
        </mymodule_setup> 
      </resources> 
    </global> 
</config> 

И в моей модели у меня есть простой:

class MyVendor_MyModule_Model_Mysql4_MyModule extends Mage_Core_Model_Mysql4_Abstract 
{ 
    public function _construct() 
    { 
     $this->_init('mymodule/mymodule', 'id'); 
    } 
} 
+0

Какой код вы используете для доступа к своей модели? –

+0

@AlanStorm Я обновил свой пост :) – MGP

+1

Случайные отладочные советы: Что вызывает вызов $ model-> load return? (var_dump вместо print_r). Можете ли вы создать экземпляр своего класса модели напрямую? ($ o = new MyVendor_MyModule_Model_MyModel;) Посмотрите в Mage_Core_Model_Config :: getGroupedClassName и попытайтесь выяснить, почему Magento не может прочитать имя класса из вашей конфигурации. –

ответ

5

В зависимости от платформы, Mage::getModel('mymodule/mymodule'); могут быть чувствительны к регистру при поиске файла для загрузки (а именно, что она должна быть Mage::getModel('myModule/myModule'); учитывая вашу структуру папок и имен)

Проверьте, что get_class (Mage :: getModel ('mymodule/mymodule')) возвращается. Является ли это классом вашего класса? Если нет, вы даже не делаете экземпляр своего объекта. Проверьте верблюд-корпус раньше, и у вас на самом деле есть файл /MyVendor/MyModule/Model/MyModule.php (с которого вы не включили код).

Если у вас есть экземпляр класса, у вас, вероятно, нет никаких строк в БД для его поддержки. So -> load (1); ничего не собирается делать.

+0

случайное именование было на самом деле проблемой здесь. теперь все работает нормально. благодаря! – MGP

0

Вы добавили в приложение/etc/modules/MyVendor_MyModule.xml и уверены, что для этого нет ошибок опечатки. Если вы найдете свой модуль в админке, то это подтверждает, что ваш модуль зарегистрирован.

Вы расширяете контроллер. Это сделано для переопределения основного контроллера.