Создаем класс модели, ресурса и коллекции данных
Magento использует "тонкие" модели. Для этого создается две модели:
- обычная модель для реализации бизнес-логики,
- ресурс-модель - для взаимодействия с базой данных.
И так, нам нужно создать две модели + класс ресурса. Класс ресурса используется для вывода данных grid-ом.
Создаем класс модели
Создаем папку:
app/code/local/My/Articles/Model
Добавляем файл:
app/code/local/My/Articles/Model/Articles.php
Добавляем код:
<?php
class My_Articles_Model_Articles extends Mage_Core_Model_Abstract { public function _construct() { parent::_construct(); /** * Инициализация модели. В файле конфигурации (см. ниже)
* Тег <myarticles> / Файл Articles.php */ $this->_init("myarticles/articles"); } }
Обратите внимание, здесь правильно _construct(), а не __construct()
Добавляем ресурс-модель
Тут мы реализуем удаление картинки после удаления записи, а также, функционал вывода пути к картинке.
Создаем папку:
app/code/local/My/Articles/Model/Resource
Создаем файл:
app/code/local/My/Articles/Model/Resource/Articles.php
Добавляем код:
<?php
class My_Articles_Model_Resource_Articles extends Mage_Core_Model_Mysql4_Abstract { public function _construct() { /* Инициализация ресурс-модели. В файле конфигурации (см. ниже) Тег <myarticles> / тег <table_myarticles> id - имя поля с Primary Key */ $this->_init("myarticles/table_myarticles", "id"); }
/** * Функция вызывается после удаления данных * Тут мы удаляем файл картинки * @return Mage_Core_Model_Resource_Db_Abstract */ protected function _afterDelete() { $helper = Mage::helper('myarticles'); @unlink($helper->getImagePath($this->getId())); return parent::_afterDelete(); }
/** * Функция возвращает путь к картинке * Воспользуемся для этого нашим хелпером * @return null */ public function getImageUrl() { $helper = Mage::helper('myarticles'); if ($this->getId() && file_exists($helper->getImagePath($this->getId()))) { return $helper->getImageUrl($this->getId()); } return null; } }
Добавляем в файл конфигурации
app/code/local/My/Articles/etc/config.xml
Нам нужно добавить параметры (см. комментарии)
- Код для моделей
- Код для ресурсов модели
<?xml version="1.0" ?> <config> <modules> <My_Articles> <version>1.0.0</version> </My_Articles> </modules> <!-- Код для контроллера --> <frontend> <routers> <marticles> <use>standard</use> <args> <module>My_Articles</module> <frontName>articles</frontName> </args> </marticles> </routers> </frontend> <global> <!-- Код для моделей --> <models> <myarticles> <!-- Мы создали класс My_Articles_Model_Articles, в этом параметре, мы указываем только путь к файлу My_Articles_Model без имени файла Articles --> <class>My_Articles_Model</class> <resourceModel>myarticles_recource</resourceModel> </myarticles> <!-- Код для ресурсов модели --> <myarticles_recource> <class>My_Articles_Model_Resource</class> <entities> <table_myarticles> <table>my_articles</table> </table_myarticles> </entities> </myarticles_recource> </models> <!-- Код для добавления таблиц в базу --> <resources> <marticles_setup> <setup> <module>My_Articles</module> </setup> </marticles_setup> </resources> </global> </config>
Создаем модель коллекций
Ресурсы используются для вывода списка данных из модели. Ресурсы используются в Grid-e
Создаем папку:
app/code/local/My/Articles/Model/Resource/Articles
Создаем файл:
app/code/local/My/Articles/Model/Resource/Articles/Collection.php
Добавляем код:
<?php
class My_Articles_Model_Resource_Articles_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract { public function _construct() { parent::_construct(); /** * Инициализация коллекции модели. В файле конфигурации * Тег <myarticles> / Файл Articles.php */ $this->_init('myarticles/articles'); } }
Комментарии
Комментарии отсутствуют, Вы можете быть первым