Как прикрутить Категории(поведения-behaivor) к Топику? ЛС 2

Вопрос освещённый, но не получилось докрутить поведения…

Использовал как исходную информацию:
1. раз
2. два
3. Категории, прикрученные к Блогам.

Что сделано:
1. В класс топика добавлен:
protected $aBehaviors = array(
        'category' => array(
            'class'       => 'ModuleCategory_BehaviorModule',
            'target_type' => 'topic',
        ),
    );

2. В класс сущности:
protected $aBehaviors = array(
        /**
         * Дополнительные поля
         */
        'property' => 'ModuleProperty_BehaviorEntity',
        /**
         * Настройка категорий
         */
        'category' => array(
            'class'                          => 'ModuleCategory_BehaviorEntity',
            'target_type'                    => 'topic',
            'form_field'                     => 'category',
            'multiple'                       => true,
        ),

    );

ЗЫ. Свойства уже были…

3. В шаблон добавления\редактирования добавил :
{insert name='block' block='fieldCategory' params=[ 'target' => $topic, 'entity' => 'ModuleTopic_EntityTopic' ]}


4. В функциях экшенов создания(EventAjaxAdd) и редактирования(EventAjaxEdit) перед публикацией\отправкой в черновик добавлено:
$oTopic->category->CallbackAfterSave();


В итоге:
При открытии формы создания\редактирования категории подтягиваются, но при сохранении\создании
топика в таблицу не записываются значения.

Вопросы:
Запись не происходит, потому что Топик не является ORM объектом?
Что необходимо ещё прикрутить, чтобы запись происходила?
Какими вызовами в дальнейшем пользоваться, чтобы получать категорию(и) текущего объекта\списка?

2 комментария

avatar
У блогов перед их сохранением есть такой код:
/**
         * Проверяем категорию блога
         */
        if (Config::Get('module.blog.category_allow')) {
            if (true !== ($mRes = $oBlog->category->ValidateCategoriesCheck(getRequest('category')))) {
                $this->Message_AddError($mRes, $this->Lang_Get('common.error.error'));
                $bOk = false;
            }
        }

Где как раз из реквеста получается переменная с категориями — 'category'
Нужно тоже самое сделать для топика.
  • ort
  • +1
avatar
Спасибо, то что нужно. Ещё заметил, что в сущности Топика не было статической переменной, нужной для добавления категории:
protected $sPrimaryKey = 'topic_id';

Без этой строчки в лог сыпалась ошибка вставки в БД, т.к. не передавался id топика. Добавил, всё ок.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.