Я разрабатываю расширение для Magento после официального руководства Magento и книги «Magento PHP Developers Guide».Magento - getModel() и getResourceModel
В книге есть элементы, элементы и тип реестра, и я думаю, что это будет хорошей практикой для будущего добавления, возможно, категорий в расширение новостей. На данный момент у меня только таблица Item, в которой есть только новости.
Согласно книге, которую я создал структуру папок и поместил мои файлы, как это:
-Model
--Mysql4
---Item
----Collection.php
---Item.php
--Resource
----Setup.php
--Item.php
в официальном руководстве есть:
-Model
--Resource
---Item
----Collection.php
---Item.php
--Item.php
- В чем разница между этими двумя ? Являются ли они оба EAV?
Я установил все (скрипты установщика) в соответствии с книгой, и все прошло отлично. Теперь у меня есть файл Controller, Block и template, и я пытаюсь отобразить данные из базы данных.
Мой config.xml выглядит следующим образом:
<global>
<models>
<gott_news>
<class>Gott_News_Model</class>
<resourceModel>gott_news_mysql4</resourceModel>
</gott_news>
<gott_news_mysql4>
<entities>
<item>
<table>gott_news_item</table>
</item>
</entities>
</gott_news_mysql4>
</models>
<resources>
<gott_news_setup>
<setup>
<module>Gott_News</module>
<class>Gott_News_Model_Resource_Setup</class>
</setup>
</gott_news_setup>
</resources>
После книге retrives данные из БД, как это:
$collection = Mage::getModel('gott_news/item')->getCollection();
руководство делает это:
$newsCollection = Mage::getResourceModel('gott_news/item_collection');
$newsCollection->prepareForList($this->getCurrentPage);
Это Функция prepareForList() находится в файле Collection.php. Я на самом деле не должны закончить эту prepareForList()
передать переменную currentPage
Проблема: Ни работает для меня. Он не получает никаких результатов от БД. и когда я использую prepareForList()
он говорит, что это не-объект
В книге есть также
<resources>
<mdg_giftregistry_setup>
<setup>
<module>Mdg_Giftregistry</module>
<class>Mdg_Giftregistry_Model_Resource_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mdg_giftregistry_setup>
<mdg_giftregistry_write>
<connection>
<use>core_write</use>
</connection>
</mdg_giftregistry_write>
<mdg_giftregistry_read>
<connection>
<use>core_read</use>
</connection>
</mdg_giftregistry_read>
</resources>
ли это необходимо, чтобы получить данные из БД?
В indexController.php indexAction()
я пытаюсь получить данные, но ничего не возвращается:
$blogpost = Mage::getModel('gott_news/item')->getCollection();
Что я должен сделать, чтобы заставить его работать ???
Большое спасибо за ваш ответ. Я читал что-то подобное о подходе Mysql4, и в документе сказано, что подход Mysql4 работал только до версии 1.7. И я также проверил, и, похоже, эта книга «Magento PHP Developers Guide» основана на 1.7, поэтому она работает там, но она не работает в версии 1.9. Я попробую то, что вы написали здесь. Еще раз спасибо – mrGott
, и у меня есть еще один вопрос: вы написали права на чтение и чтение в узлах xml. Что это делает? и зачем он нужен? Вы можете объяснить? – mrGott
Извините, но я никогда не задумывался об этом, потому что он работает без него. Я считаю, что это необходимо, когда у вас есть разные типы соединений для вашего модуля. –