Новое событие для Orm объектов
Игорь Табаев
Обновлен 9 лет назад в категории
CMS Общий функционал
Здравствуйте, столкнулся с тем, что нужно добавить дополнительное поле в Orm объект catalog-product. Для этого у API есть событие
orm.init.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА. Однако в базе поле хранится в сериализованом виде, а для работы с объектом
product его нужно обратно преобразовать в массив. Отсюда и необходимость в дополнительном событии по типу
orm.afterobjectload.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА. Тем более у
RS::ORM::AbstractObject есть такой метод. Будет достаточно в этом классе сгенерировать новое событие. Например так:
public function afterObjectLoad()
{
/**
* Event: orm.afterobjectload
* paramtype \RS\Orm\AbstractObject
*/
\RS\Event\Manager::fire('orm.afterobjectload.' . $this->getShortAlias(), $this);
}
И во всех потомках этого класса в методе afterObjectLoad (если он там переопределен) вызывать:
parent::afterObjectLoad()
Возможно я упускаю какие-то трудности в реализации, но отсутствие такого событие показалось как минимум странным. Если можно изменить данные объекта перед самой записью в базу, то почему нельзя изменить его и сразу после получения из базы?
Комментарии 2
Ответить 0
Ответить 0
Написать сообщение