<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум ReadyScript &mdash; Новое событие для Orm объектов]]></title>
		<link>http://forum.readyscript.ru/topic/492/novoe-sobytie-dlya-orm-obektov/</link>
		<atom:link href="http://forum.readyscript.ru/feed/rss/topic/492/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Новое событие для Orm объектов».]]></description>
		<lastBuildDate>Wed, 07 Oct 2015 10:19:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Новое событие для Orm объектов]]></title>
			<link>http://forum.readyscript.ru/post/2043/#p2043</link>
			<description><![CDATA[<p>Мы видели Ваше пожелание, мы его добавим. Пока можно просто при получении данных разсериализовывать значение.<br />Например для шаблона это будет выглядеть примерно так.<br /></p><div class="codebox"><pre><code>{$data=@unserialize($product.data)}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Александр)]]></author>
			<pubDate>Wed, 07 Oct 2015 10:19:16 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/2043/#p2043</guid>
		</item>
		<item>
			<title><![CDATA[Новое событие для Orm объектов]]></title>
			<link>http://forum.readyscript.ru/post/2036/#p2036</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Игорь)]]></author>
			<pubDate>Tue, 06 Oct 2015 22:13:06 +0000</pubDate>
			<guid>http://forum.readyscript.ru/post/2036/#p2036</guid>
		</item>
	</channel>
</rss>
