Добавление полей в $_modx->resource.
Подскажите может кто сталкивался. Пишу плагин почти в слепую ориентируясь на minishop2. Создал необходимы таблицы:
<object class="hdOrder" extends="modResource">
<composite alias="Data" class="hdOrderData" local="id" foreign="id" cardinality="one" owner="local"/>
</object>
<object class="hdOrderData" table="hd_orders" extends="xPDOSimpleObject">
<field key="contact" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="true"/>
<index alias="contact" name="contact" primary="false" unique="false" type="BTREE">
<column key="contact" length="" collation="A" null="false"/>
</index>
<aggregate alias="Order" class="hdOrder" local="id" foreign="id" cardinality="one" owner="foreign"/>
</object>
Хочу вывести значения переменных из таблицы hdOrderData на странице типа $_modx->resource.article, но не выводится. Само присоединение сделано через плагинcase 'OnLoadWebDocument':
// Set product fields as [[*resource]] tags
if ($modx->resource->get('template') === 7) {
if ($dataMeta = $modx->getFieldMeta('hdOrderData')) {
unset($dataMeta['id']);
$modx->resource->_fieldMeta = array_merge(
$modx->resource->_fieldMeta,
$dataMeta
);
}
}
break;
Нужен вывод $_modx->resource.contact Комментарии: 13
Может просто добавить:
$modx->resource->set("dataMeta", $dataMeta);
Нет. Это совершенно не то.
Вы только XML таблицу сделали или классы под каждую таблицу тоже добавили?
Через $modx->getObject(hdOrder) записи доступны?
Через $modx->getObject(hdOrder) записи доступны?
Делал на основе modextra. Там автоматическое создание классов. Да через getObject все показывает. Думал может в processor связка какая но нет.
Нет процессоры тут не при чем.
Вся магия в плагине на который вы ссылаетесь и модифицированном методе get класса msproduct.class.php
Вся магия в плагине на который вы ссылаетесь и модифицированном методе get класса msproduct.class.php
Спасибо тебе добрый человек. Я на него думал, но так и не смог понять где он подключается (сам msproduct.class.php).
Он подключается автоматически через mysql карту объекта
Глупость сказал, не посмотрел на сокращение. Записи не доступны. Я подумал про hdOrderData. Файл hdorder.class.php при die() в __construct ноль внимания. хотя в mysql карту объекта все есть. Единственное различие с minishop2 разве что в том что нет поля class_key.
Короче вдруг кому пригодится. Вся магия происходит в msproduct.class.php, пока еще я там не разбирался. Но вызываться этот класс просто так не будет. Чтобы он вызывался, необходимо как в minishop2 добавить существующее поле class key с именем твоего класса
<object class="hdOrder" extends="modResource">
<field key="class_key" dbtype="varchar" precision="100" phptype="string" null="false" default="hdOrder"/>
<composite alias="Data" class="hdOrderData" local="id" foreign="id" cardinality="one" owner="local"/>
</object>
И только после этого msproduct.class.php или в данном случае hdorder.class.php будет вызываться.
Вот тут почитайте про плагины товаров, думаю, все встанет на свои места.
Спасибо Роман конечно, но вы уже второй раз не по делу пишите. Тут речь идет о СОЗДАНИИ своего компонента на основе существующего.
Не буду вам больше писать. Я понял, что это бесполезно, когда даже прочитать документацию до конца не могут.
Роман, извините, не хотел Вас обидеть. Эту документацию я уже много раз читал и понимаю что там находится. Там говорится лишь о удобности использования объекта msProduct, который объединяет в себе другие таблицы. Так же там сказано о возможности подключения своих плагинов и рассказан принцип. Я же хочу написать свой компонент (minishop2 в данном случае не установлен). Но спасибо за Ваше участие. Еще раз прошу прощения, если показался грубым.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.