Best Answer .polega. , 05 January 2014 - 09:10
дошли руки до проверки
Да, все верно. Для этого в обработчике события нужно сделать проверку на тип материала и существование элемента в материале.
мне кажется, достаточно проверять существование элемента в материале, в другом типе материала этого элемента не будет по определению.
в итоге код получается таким:
$item = $event->getSubject(); // получаем объект сохраняемого материала
// чтобы не было бесконечного цикла (должно выполнятся всегда, иначе будут проблемы с импортом)
$item->getParams()->set('jbzoo.no_index', 1);
// для обычного поля text (а также проверка существования элемента)
if ($item->getElement('<ELEMENT_ID>')) {
$item->getElement('<ELEMENT_ID>')->bindData(array(
array('value' => $item->id)
));
// сохраняем изменения
self::app()->table->item->save($item);
}
где <ELEMENT_ID> - это идентификатор ВАШЕГО элемента
в моём случае это так:
// для обычного поля text (а также проверка существования элемента)
if ($item->getElement('9594d3bd-b58c-4adf-97c7-77dae1d7e27f')) {
$item->getElement('9594d3bd-b58c-4adf-97c7-77dae1d7e27f')->bindData(array(
array('value' => $item->id)
));
проверил, всё работает как надо.
думаю, тему можно закрывать.
Go to the full post


This topic is locked








