Создаем класс модели, ресурса и коллекции данных
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'); } }
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым