<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум ReadyScript &mdash; Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
	<link rel="self" href="https://forum.readyscript.ru/feed/atom/topic/236/" />
	<updated>2014-12-17T09:06:20Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.readyscript.ru/topic/236/kak-pravilno-dobavit-dopolnitelnoe-pole-v-tablitsu-productoffer/</id>
		<entry>
			<title type="html"><![CDATA[Re: Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/814/#p814" />
			<content type="html"><![CDATA[<p>Да, если в аргументе 2,3 метода bind - не задан callback на другой обработчик.</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://forum.readyscript.ru/user/2/</uri>
			</author>
			<updated>2014-12-17T09:06:20Z</updated>
			<id>https://forum.readyscript.ru/post/814/#p814</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/813/#p813" />
			<content type="html"><![CDATA[<p>я правильно понял, что на события для их обработаки навешивается функция которая именуется ВСЕГДА так</p><p>orm.init.catalog-offer = function OrmInitCatalogOffer</p>]]></content>
			<author>
				<name><![CDATA[AleksC1976]]></name>
				<uri>https://forum.readyscript.ru/user/39/</uri>
			</author>
			<updated>2014-12-17T09:02:59Z</updated>
			<id>https://forum.readyscript.ru/post/813/#p813</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/810/#p810" />
			<content type="html"><![CDATA[<p>Ошибка в следующем:</p><p>Вы подвешиваетесь на событие <strong>orm.init.catalog-offer</strong>. 2,3 аргумент у bind - не задан, соответственно это означает, что система будет искать в данном классе функцию для обработки события с названием события, за вычетом точек и минусов.</p><p>т.е. Вам необходимо назвать функцию вместо ormInitCatalogProduct так:<br /></p><div class="codebox"><pre><code>public static function ormInitCatalogOffer(\Catalog\Model\Orm\Offer $offer)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://forum.readyscript.ru/user/2/</uri>
			</author>
			<updated>2014-12-17T08:27:55Z</updated>
			<id>https://forum.readyscript.ru/post/810/#p810</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/809/#p809" />
			<content type="html"><![CDATA[<p>Пользуясь случаем, хочу сказать, когда люди пишут на форум - это обычно означает, что они ознакомились с руководством на вашем сайте и что то пошло не так. Ну да ладно - это все лирическое отступление. По существу имею сказать следующее</p><p>вот такой файл <strong>handlers.inc.php</strong> упорно <strong><span style="color: red">не добавляет</span></strong> нужное поле в таблицу <strong>product_offer</strong></p><div class="codebox"><pre><code>&lt;?php
namespace Custom\Config;
 
class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this-&gt;bind(&#039;orm.init.catalog-offer&#039;);
    }
    public static function ormInitCatalogProduct(\Catalog\Model\Orm\Offer $orm_offer)
    {
        $orm_offer-&gt;getPropertyIterator()-&gt;append(array( //Добавляем свойства к объекту
               
            &#039;offertype&#039; =&gt; new \RS\Orm\Type\Integer(array( //Тип поля. Задает тип в базе INT
            &#039;maxLength&#039; =&gt; 1, // Длина поля в базе будет INT(1)
            &#039;description&#039; =&gt; &#039;Признак заказной позиции&#039;, //Название поля

            ))
        ));
    }
}</code></pre></div><p>а&nbsp; вот такой файл <strong>handlers.inc.php</strong>&nbsp; <strong><span style="color: green">добавляет</span></strong> нужное поле в таблицу <strong>product</strong></p><div class="codebox"><pre><code>&lt;?php
namespace Custom\Config;
 
class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this-&gt;bind(orm.init.catalog-product&#039;);
    }

    public static function ormInitCatalogProduct(\Catalog\Model\Orm\product $orm_offer)
    {
        $orm_offer-&gt;getPropertyIterator()-&gt;append(array( //Добавляем свойства к объекту
               
            &#039;offertype&#039; =&gt; new \RS\Orm\Type\Integer(array( //Тип поля. Задает тип в базе INT
            &#039;maxLength&#039; =&gt; 1, // Длина поля в базе будет INT(1)
            &#039;description&#039; =&gt; &#039;Признак заказной позиции&#039;, //Название поля

            ))
        ));
    }
}</code></pre></div><p>Отличия в этих файлах всего 2</p><p>1) $this-&gt;bind(&#039;<strong>orm.init.catalog-product</strong>&#039;) <span style="color: green"><strong>/</strong></span> $this-&gt;bind(&#039;<strong>orm.init.catalog-offer</strong>&#039;)<br />2)&nbsp; public static function ormInitCatalogProduct(<strong>\Catalog\Model\Orm\product</strong> $orm_offer) <span style="color: green"><strong>/</strong></span> public static function ormInitCatalogProduct(<strong>\Catalog\Model\Orm\Offer</strong> $orm_offer)</p><p>Из чего я делаю вывод, что то не в порядке с именованием ORM видимо с моей стороны, именовал ORM в соответствии с руководством и вашим сообщением <a href="http://forum.readyscript.ru/post/806/#p806">http://forum.readyscript.ru/post/806/#p806</a>, я все эти операции уже проделал перед тем как написать на форум. Отчаялся заставить работать функцию из трех строчки&nbsp; и сделал с подменой классов, но после обновленя магазина все перестало работать - начались ошибки. при изменении структуры БД, о чем я уже писал в соседней ветке.</p><p>Получается что я не могу никак добавить поле в БД, только в PHPMyAdmin - что не есть хорошо. Хотелосб бы использовать модульность системы. Может я не вижу какую то запятую конечно ?&nbsp; ПОдскажите пожалуйста. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[AleksC1976]]></name>
				<uri>https://forum.readyscript.ru/user/39/</uri>
			</author>
			<updated>2014-12-17T05:10:08Z</updated>
			<id>https://forum.readyscript.ru/post/809/#p809</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/806/#p806" />
			<content type="html"><![CDATA[<p>Торговое предложение - это обычный ORM объект класса \Catalog\Model\Orm\Offer.<br />В нашей статье подробно расписано, как расширять ORM объект из дополнительного модуля. (см. обработку события orm.init.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА)<br /><a href="http://readyscript.ru/text-blog/Kak-pravilno-rasshiryat-funkcional-internetmagazinov-ReadyScript/">http://readyscript.ru/text-blog/Kak-pra … adyScript/</a></p><p>Следует учитывать, что Торговое предложение имеет не автоматически генерируемую форму отображения в админ. панели. Т.е. если необходимо выводить данное поле визуально в админ. панели, то необходимо будет править шаблон \modules\catalog\view\form\product\offers.tpl</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://forum.readyscript.ru/user/2/</uri>
			</author>
			<updated>2014-12-15T10:56:31Z</updated>
			<id>https://forum.readyscript.ru/post/806/#p806</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Как правильно добавить дополнительное поле в таблицу product_offer]]></title>
			<link rel="alternate" href="https://forum.readyscript.ru/post/805/#p805" />
			<content type="html"><![CDATA[<p>Необходимо добавить дополнительное поле в БД в таблицу product_offer. <br />С товарами вроде все понятно, через ORM объекты, а как быть с товарными предложениями? Нужно добавить дополнительное поле в таблицу с товарными предложениями.</p><p>С подменой классов конечно все легко и просто - &quot;2 минуты делов&quot;, а вот с собственными модулями как то не очень. Непонятно, на какое событие можно повесить добавление поля к товарному предложению.</p>]]></content>
			<author>
				<name><![CDATA[AleksC1976]]></name>
				<uri>https://forum.readyscript.ru/user/39/</uri>
			</author>
			<updated>2014-12-15T09:30:42Z</updated>
			<id>https://forum.readyscript.ru/post/805/#p805</id>
		</entry>
</feed>
