неустранимая ошибка: Вызов функции-члена getCollection() для не-объекта в magento


Я пытаюсь получить коллекцию объектов таблицы нашей базы данных. К сожалению, следующий код приводил к ошибке.

Мой код

  <?php

class Ics_EasyLife_Block_Template extends Mage_Core_Block_Template
{
    public function methodblock()
    {

        //on initialize la variable
        $retour='';

        $collection = Mage::getModel('easylife/easylife')->getCollection()->setOrder('id_ics_easylife','asc');

        foreach($collection as $data)
        {
            $retour .= $data->getData('nom').' '.$data->getData('prenom').' '.$data->getData('telephone').'<br />';
        }

        Mage::getSingleton('adminhtml/session')->addSuccess('Cool Ca marche !!');
        return $retour;
    }
}

//config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Ics_EasyLife>
            <version>0.0.1</version>
        </Ics_EasyLife>
    </modules>
    <frontend>
        <routers>
            <icscontroller>
                <use>standard</use>
                <args>
                    <module>Ics_EasyLife</module>
                    <frontName>display</frontName>
                </args>
            </icscontroller>
        </routers>
        <layout>
            <updates>
                <easylife>
                    <file>easylife.xml</file>
                </easylife>
            </updates>
        </layout>
    </frontend>
    <global>
        <blocks>
            <easylife>
                <class>Ics_EasyLife_Block</class>
            </easylife>
        </blocks>
        <models>
            <easylife>
                <class>Ics_EasyLife_Model</class>
                <resourceModel>easylife_resource</resourceModel>
            </easylife>
            <easylife_resource>
                <class>Ics_EasyLife_Model_Resource</class>
                <entities>
                    <easylife>
                        <table>ics_test</table>
                    </easylife>
                </entities>
            </easylife_resource>
        </models>
        <resources>
            <easylife_write>
                <connection>core_write</connection>
            </easylife_write>
            <easylife_read>
                <connection>core_read</connection>
            </easylife_read>
        </resources>
    </global>
</config>

//Модель->Easylife.php

<?php

class Ics_EasyLife_Model_Easylife extends Mage_Core_Model_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('easylife/easylife');
    }
}

//Модель->Ресурс->Easylife.php

<?php
class Ics_EasyLife_Model_Resource_Easylife extends Mage_Core_Model_Resource_Db_Abstract
{
    public function _construct()
    {
        $this->_init('easylife/easylife','id_easylife');
    }
}

?>

//Модель->Ресурс ->Легкая жизнь->Collection.php

<?php
class Ics_EasyLife_Model_Resource_Easylife_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('easylife/easylife');
    }
}

//sql->install-0.0.1.php

<?php


$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */

$installer->startSetup();

$installer->run("

--DROP TABLE IF EXISTS {$this->getTable('easylife')};
CREATE TABLE {$this->getTable('easylife')} (
'id_easylife' INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'nom' VARCHAR( 50 ) NOT NULL ,
'prenom' VARCHAR( 50 ) NOT NULL ,
'telephone' VARCHAR( 20 ) NOT NULL,
 PRIMARY KEY ('id_easylife')
);ENGINE=InnoDB DEFAULT CHARSET=utf8;

");

$installer->endSetup();

Кто-нибудь может сказать мне, где я ошибся?

Спасибо в продвижение.

Author: Manoj Kumar, 2013-10-01

4 answers

Ошибка в основном говорит нам о том, что Mage::getModel('easylife/easylife') не возвращает допустимый класс. Пожалуйста, убедитесь, что файл Ics/Easylife/Model/Easylife.php существует и выглядит примерно так, как показано ниже, это должно предоставить вам доступ к модели ресурсов.

class Ics_Easylife_Model_Easylife extends Mage_Core_Model_Abstract
{
   public function _construct()
   {
      parent::_construct();
      $this->_init('easylife/easylife');
   }
}

Если это не сработает, я бы посоветовал вам проверить эту страницу википедии, в которой четко описано, что вам нужно делать при использовании коллекций.

 6
Author: Sander Mangel, 2013-10-01 09:46:36

Проверьте модель вашего модуля должным образом, должно быть что-то не так. есть ли у вас правильно структурированный класс коллекции в модели вашего модуля?

 3
Author: Sarvagya, 2013-10-01 19:43:40

Когда-нибудь, если вы попытаетесь удалить любое расширение (для меня это было "mgt_developertoolbar"), вручную удалив все связанные файлы, но все равно вам нужно очистить данные из таблицы "core_resource".

 2
Author: Arif ul Hoque, 2015-08-06 09:45:30

В случае, если вы попытаетесь удалить любое расширение, вручную удалив все, необходимо очистить весь кэш. Если вы используете кэш redis, пожалуйста, попробуйте в командной строке:

Nguyens-MacBook-Pro:~ nguyende$ redis-cli flushall
 1
Author: De Nguyen, 2017-03-23 05:35:58