Тема: Новое событие для Orm объектов

Здравствуйте, столкнулся с тем, что нужно добавить дополнительное поле в  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()

Возможно я упускаю какие-то трудности в реализации, но отсутствие такого событие показалось как минимум странным. Если можно изменить данные объекта перед самой записью в базу, то почему нельзя изменить его и сразу после получения из базы?

Повысить оценку Понизить оценку

Re: Новое событие для Orm объектов

Мы видели Ваше пожелание, мы его добавим. Пока можно просто при получении данных разсериализовывать значение.
Например для шаблона это будет выглядеть примерно так.

{$data=@unserialize($product.data)}