<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум ReadyScript &mdash; Новое событие для Orm объектов]]></title>
	<link rel="self" href="http://forum.readyscript.ru/feed/atom/topic/492/" />
	<updated>2015-10-07T10:19:16Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.readyscript.ru/topic/492/novoe-sobytie-dlya-orm-obektov/</id>
		<entry>
			<title type="html"><![CDATA[Re: Новое событие для Orm объектов]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/2043/#p2043" />
			<content type="html"><![CDATA[<p>Мы видели Ваше пожелание, мы его добавим. Пока можно просто при получении данных разсериализовывать значение.<br />Например для шаблона это будет выглядеть примерно так.<br /></p><div class="codebox"><pre><code>{$data=@unserialize($product.data)}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Александр]]></name>
				<uri>http://forum.readyscript.ru/user/20/</uri>
			</author>
			<updated>2015-10-07T10:19:16Z</updated>
			<id>http://forum.readyscript.ru/post/2043/#p2043</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Новое событие для Orm объектов]]></title>
			<link rel="alternate" href="http://forum.readyscript.ru/post/2036/#p2036" />
			<content type="html"><![CDATA[<p>Здравствуйте, столкнулся с тем, что нужно добавить дополнительное поле в&nbsp; Orm объект catalog-product. Для этого у API есть событие <em>orm.init.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА</em>. Однако в базе поле хранится в сериализованом виде, а для работы с объектом <em>product</em> его нужно обратно преобразовать в массив. Отсюда и необходимость в дополнительном событии по типу <em>orm.afterobjectload.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА</em>. Тем более у <em>RS::ORM::AbstractObject</em> есть такой метод. Будет достаточно в этом классе сгенерировать новое событие. Например так:<br /></p><div class="codebox"><pre><code>public function afterObjectLoad()
    {
        /**
         * Event: orm.afterobjectload
         * paramtype \RS\Orm\AbstractObject
         */
        \RS\Event\Manager::fire(&#039;orm.afterobjectload.&#039; . $this-&gt;getShortAlias(), $this);
    }</code></pre></div><p>И во всех потомках этого класса в методе afterObjectLoad (если он там переопределен) вызывать:<br /></p><div class="codebox"><pre><code>parent::afterObjectLoad()</code></pre></div><p>Возможно я упускаю какие-то трудности в реализации, но отсутствие такого событие показалось как минимум странным. Если можно изменить данные объекта перед самой записью в базу, то почему нельзя изменить его и сразу после получения из базы?</p>]]></content>
			<author>
				<name><![CDATA[Игорь]]></name>
				<uri>http://forum.readyscript.ru/user/237/</uri>
			</author>
			<updated>2015-10-06T22:13:06Z</updated>
			<id>http://forum.readyscript.ru/post/2036/#p2036</id>
		</entry>
</feed>
