пятница, 9 сентября 2011 г.

Создание связи между страницами и сообщениями

Продолжаю работать над модулем статических страниц. Изначально я подошел к проектированию моего каталога не по научному: ведь сначала надо все спроектировать, придумать все действия, действующих лиц, описать все на языке UML И только после этого браться за программирование. А я программирую и одновременно проектирую свой каталог, поэтому приходится иногда делать шаг назад. Сначала я хотел, чтобы у таблицы связей tbl_sprelations был составной ключ из полей tbl_sppage_id, tbl_spmessage_id, sort но генератор кода gii не может сгенерировать CRUD для таблицы с составными полями. Поэтому я решил не заморачиваться и сделать колонку id которая и будет обычным индексным полем этой таблицы. CRUD сгенерировал так же как в для страниц и сообщений  Связи описываются в модели Sprelations (файл Z:\home\catalog.loc\www\protected\modules\staticpage\models\Sprelations.php)
/**
* —return array relational rules.
 */
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'message' => array(self::BELONGS_TO, 'Spmessage', 'tbl_spmessage_id'),
'page' => array(self::BELONGS_TO, 'Sppage', 'tbl_sppage_id'),
);
}
В модели Sprelations появляются атрибуты
message->id
message->title
message->message
message->shown
и
message->id
message->name
message->url
message->sorting
message->shown
Теперь по аналогии с товарами и категориями подставляю в представлениях нужные поля. Получился довольно неплохой модуль управления статичными страницами. Название статичные теперь уже конечно неуместно. Администратор может создать страницу из нескольких сообщений, использовать одно сообщение на странице несколько раз и одно сообщение на разных страницах. В будущем я добавлю к таблице связей поля типа date с датой начала и окончания показа сообщения, тогда администратор сможет создавать сообщения и указывать с какого по какое число месяца оно будет показано. Например создаст сообщение «С новым годом!» и укажет: начальная дата: 25.12.2011 конечная дата: 01.01.2012. И поздравление само в нужный день вылезет на нужной странице, а потом пропадёт.  
Продолжение следует.

Комментариев нет:

Отправить комментарий