Цитата |
---|
написал: ищу аналог CIBlockElement::SetPropertyValuesEx на D7
нужен метод установки одного множественного свойства элемента инфоблока |
Для того, чтобы начать использовать эту возможность вам необходимо зайти в настройки информационного блока и задать значения для поля «Символьный код API».
Для свойств типа строка: / множественный / привязка к элементуRATING_LIKE - Свойство в инфоблокеаналогично пишем всегда $element->getRatingLike() в "CamelCased" - код свойстваКод |
---|
\Bitrix\Main\Loader::includeModule('iblock');
$iblock = \Bitrix\Iblock\Iblock::wakeUp(IB_ARTICLE); // IB_ARTICLE - Ваш инфобло
$classArticleName = $iblock->getEntityDataClass();
$element = $classArticleName::getByPrimary( $ELEMENT_ID , array( // $ELEMENT_ID - id елемента
'select' => array('ID', 'NAME', 'RATING_LIKE')
))->fetchObject();
// Запись Тип Строка
$element->getRatingLike()->setValue('new value');
$element->getRatingLike()->setDescription('new descr');
// ========== Запись Множественный ============
use Bitrix\Iblock\ORM\PropertyValue;
foreach ($element->getRatingLike() as $value)
{
$value->setValue('new value');
$value->setDescription('new descr');
}
$element->addToRatingLike(new PropertyValue('new value'));
$element->addToRatingFile(new PropertyValue('new value', 'new descr'));
// ===========================================
// установка привязки к элементу
$element->getRatingLike()->setElement($anotherElement);
// Сохраняем
$element->save();
|
ЕСЛИ ошибка типа «Call to a member function on null» - Проверьте наличие свойства в Инфоблоке и его Имя.
(Возможно - не видит "новосозданное свойство", странно, конечно, но мне помогло элементарное пересохранение их админки элементов...)
После Идем в Настройки - Поиск - Переиндексация. Переиндексируйте iblock.