неустранимая ошибка: Вызов функции-члена 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();
Кто-нибудь может сказать мне, где я ошибся?
Спасибо в продвижение.
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');
}
}
Если это не сработает, я бы посоветовал вам проверить эту страницу википедии, в которой четко описано, что вам нужно делать при использовании коллекций.
Проверьте модель вашего модуля должным образом, должно быть что-то не так. есть ли у вас правильно структурированный класс коллекции в модели вашего модуля?
Когда-нибудь, если вы попытаетесь удалить любое расширение (для меня это было "mgt_developertoolbar"), вручную удалив все связанные файлы, но все равно вам нужно очистить данные из таблицы "core_resource".
В случае, если вы попытаетесь удалить любое расширение, вручную удалив все, необходимо очистить весь кэш. Если вы используете кэш redis, пожалуйста, попробуйте в командной строке:
Nguyens-MacBook-Pro:~ nguyende$ redis-cli flushall