Pregunta

Tengo un problema cuando crea modelo de datos lección 3/test/block/monblock.php

<?php
class Lesson3_Test_Block_Monblock extends Mage_Core_Block_Template
{
    public function methodblock()
    {
        $retour='';
        /* we are doing the query to select all elements of the pfay_test table (thanks to our model test/test and we sort them by id */
        $collection = Mage::getModel('test/test')->getCollection()->setOrder('id_celebes','asc');
        /* then, we check the result of the query and with the function getData() */
        foreach($collection as $data)
        {
             $retour .= $data->getData('name').' '.$data->getData('surename').' '.$data->getData('phone').'<br />';
        }
        //i return a success message to the user thanks to the Session.
        Mage::getSingleton('adminhtml/session')->addSuccess('Congratulation !!');
        return $retour;
     }
}

Lección3/Prueba/etc/config.xml

<?xml version="1.0"?>
  <config>
     <modules>
        <Lesson3_Test>
          <version>1.0.0</version>
        </Lesson3_Test>
     </modules>
     <frontend>
       <routers>
          <lesson3>
              <use>standard</use>
              <args>
                 <module>Lesson3_Test</module>
                 <frontName>lesson3</frontName>
              </args>
           </lesson3>
       </routers>
       <layout>
         <updates>
              <lesson3>
                   <file>lesson3.xml</file>
               </lesson3>
          </updates>
      </layout>
    </frontend>
    <global>
      <blocks>
        <lesson3>
          <class>Lesson3_Test_Block</class>
        </lesson3>
      </blocks>
    <models>
        <lesson3>
            <class>Lesson3_Test_Model</class>
            <resourceModel>Test_mysql4</resourceModel>
        </lesson3>
        <lesson3_mysql4>
            <class>Lesson3_Test_Model_Mysql4</class>
            <entities>
                <test>
                    <table>celebes</table>
                </test>
            </entities>
        </lesson3_mysql4>
    </models>
        <!-- allow the plugin to read and write -->
    <resources>
        <!-- connection to write -->
        <lesson3_write>
            <connection>
                <use>core_write</use>
            </connection>
        </lesson3_write>
        <!-- connection to read -->
       <lesson3_read>
          <connection>
             <use>core_read</use>
          </connection>
       </lesson3_read>
    </resources>
    </global>
</config>

Lección3/Prueba/controladores/IndexController.php

<?php

class Lesson3_Test_IndexController extends Mage_Core_Controller_Front_Action
{
   public function indexAction()
   {
        $this->loadLayout();
        $this->renderLayout();
        Zend_Debug::dump($this->getLayout()->getUpdate()->getHandles());
   }

    public function testAction()
    {
        echo 'test mymethod';
    }
}

Lección3/Prueba/Modelo/Prueba.php

<?php
class Lesson3_Test_Model_Test extends Mage_Core_Model_Abstract
{
     public function _construct()
     {
         parent::_construct();
         $this->_init('test/test');
     }
}

Lección3/Prueba/Modelo/Mysql4/Test.php

<?php
class Lesson3_Test_Model_Mysql4_Test extends Mage_Core_Model_Mysql4_Abstract
{
     public function _construct()
     {
         $this->_init('test/test', 'id_celebes');
     }
}

Lección3/Prueba/Modelo/Mysql4/Prueba/Collection.php

<?php
class Celebes_Lesson3_Test_Model_Mysql4_Test_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
 {
     public function _construct()
     {
         parent::_construct();
         $this->_init('test/test');
     }
}
¿Fue útil?

Solución 2

I found the problem on config <resourceModel>Test_mysql4</resourceModel>.

I change it with this <resourceModel>test_mysql4</resourceModel> and its work

Otros consejos

declaraste tus modelos así:

 <models>
    <lesson3>
        <class>Lesson3_Test_Model</class>
        <resourceModel>Test_mysql4</resourceModel>
    </lesson3>
    <lesson3_mysql4>
        <class>Lesson3_Test_Model_Mysql4</class>
        <entities>
            <test>
                <table>celebes</table>
            </test>
        </entities>
    </lesson3_mysql4>
</models>

esto significa que el alias de los modelos es lesson3 (la primera etiqueta debajo <models>).
Entonces necesitas crear una instancia de tus modelos de esta manera:

Mage::getModel('lesson3/model_name_here'); 

En su caso, en lugar de

$collection = Mage::getModel('test/test')->getCollection()....

necesitas usar

$collection = Mage::getModel('lesson3/test')->getCollection()....

También reemplazar en Lesson3_Test_Model_Mysql4_Test este

$this->_init('test/test', 'id_celebes');

con este

$this->_init('lesson3/test', 'id_celebes');

y en Celebes_Lesson3_Test_Model_Mysql4_Test_Collection y Lesson3_Test_Model_Test este

$this->_init('test/test');

con este

$this->_init('lesson3/test');

O, en lugar de todo lo anterior, puedes reemplazarlo en config.xml la etiqueta <lesson3> bajo <models> y <blocks> con <test>.

[EDITAR]

<resourceModel>Test_mysql4</resourceModel> debiera ser <resourceModel>lesson3_mysql4</resourceModel>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top