В большинстве случаев ваши Ноды будут контейнером для элементов контента - это типичная структура, используемая большинством приложений. Модели нод и модели их элементов контента предоставляют ряд методов для работы друг с другом в таких отношениях. Эта взаимосвязь состоит из двух частей: функциональности, которая становится доступной для контейнера (т.е. Ноды), и функциональности, которая становится доступной для элементов контента в этой ноде.
Настройка модели ноды
В вашей модели ноды вы должны указать название модели элемента контента, который вы используете.
public static $contentItemClass = 'string';
Например, в модели ноды Форум, мы должны указать модель элемента контента следующим образом:
public static $contentItemClass = 'IPS\forums\Topic';
Настройка модели элемента контента
В модели элемента контент вы должны указать название используемой модели ноды.
public static $containerNodeClass = 'string';
Например, в модели ноды Topic, мы укажем модель ноды таким образом
public static $containerNodeClass = 'IPS\forums\Forum';
Кроме того, вам нужно добавить ключ с именем container к свойству $databaseColumnMap, значение которого должно быть именем столбца в таблице базы данных, который содержит ID ноды, которая является родительской для каждого элемента контента.
protected static $databaseColumnMap = array(
'container' => 'parent_id',
//other column maps...
);
Геттеры/Сеттеры, доступные для модели ноды
После установления двусторонней привязки эти дополнительные геттеры и сеттеры становятся доступными для класса вашей модели. Все они определены в базовом классе модели ноды, и по умолчанию все методы get__* возвращают NULL, тогда как все методы set__* ничего не делают. Вы можете переопределить их в своем собственном классе, если вам нужно отслеживать значения.