Центр документации
Карта сайта


Новая документация

Настройка платежных систем
Настройка способа оплаты КупиВкредит
Настройка способа оплаты Acquiro
Настройка способа оплаты AvisoSMS

Обновленная документация 

Разработчикам (API)
Руководство пользователя

Несколько моделей одного модуля

Архитектура Amiro.CMS предполагает, что один модуль может иметь только одну модель.

Пример работы с несколькими источниками данных.

Абстрактный модуль учета почтовых отправлений inst_postmod.
Таблица cms_postmod содержит данные отправлений, такие как дата получения отправления, отправитель, получатель, почтовое отделения получателя.

CREATE TABLE `cms_inst_postmod` (
    `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `sender_name` VARCHAR( 64 ) NOT NULL,
    `receiver_name` VARCHAR( 64 ) NOT NULL,
    `destination_id` INT( 11 ) NOT NULL,
    `date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX ( `destination_id` )
) ENGINE = MYISAM;

Таблица cms_inst_postmod_offices содержит справочник почтовых отделений, с индексами и адресами.

CREATE TABLE `cms_inst_postmod_offices` (
    `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `post_index` VARCHAR( 6 ) NOT NULL,
    `address` VARCHAR( 64 ) NOT NULL,
    `phone` VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;

Связь осуществляется по условию cms_inst_postmod_offices.id = cms_inst_postmod.destination_id

Решение

Будем считать, что для модели работы с данными таблицы cms_inst_postmod_offices есть отдельный модуль inst_postmod_offices.
Этому модулю не нужен ни функциональный код, ни шаблоны. Фактически, он даже не должен быть объявлен в системе. Достаточно создать файл содержащий классы модели этого модуля.
При этом, имя файла с классами должно соответствовать формату {$modIdCamelCase}_Table.php

_local/modules/code/InstPostmodOffices_Table.php:

<?php
 
class InstPostmodOffices_Table extends AMI_ModTable{
}
 
class InstPostmodOffices_TableItem extends AMI_ModTableItem{
}
 
class InstPostmodOffices_TableList extends AMI_ModTableList{
}

Теперь модуль inst_postmod сможет обращаться к модели с данными почтовых отделений используя ресурсы:

$oOffceModel = AMI::getResourceModel('inst_postmod_offices/table');

А так же устанавливать связь с основной моделью используя зависимости.

Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API) Документация для скачивания
 2000 – 2011 © Amiro.CMS Все права защищены.