@barder

Как вставить элемент инфоблока в свойство другого элемента — другого инфоблока?

Имеется инфоблок с элементами товаров, создал еще один инфоблок для хранения отзывов, передаю параметры для создания, но никак не могу понять и найти, как передать элемент каталога в свойство другого элемента другого инфоблока.
Код делаю в шаблоне элемента:
<div class="content">
	<h3>Отзывы об "<? echo $arResult['NAME'] ?>"</h3>
	<hr>
<? 
$countOnPage = 3;

    $fastUrlsList = array();
    $arSelect = Array("ID", "NAME", "PREVIEW_TEXT", "PROPERTY_SPRAV", "DATE_CREATE");
	$arFilter = Array("IBLOCK_ID"=>34, "ACTIVE"=>"Y", "PROPERTY_SPRAV"=>$arResult["ID"]);
	$res = CIBlockElement::GetList(array("SORT"=>"ASC"), $arFilter, false, array("nPageSize" => $countOnPage), $arSelect);

        $arFields = $ob->GetFields();
        $fastUrlsList[] = array(
            "NAME" => $arFields["NAME"],
            "PREVIEW_TEXT" => $arFields["PREVIEW_TEXT"],
            "DATE_CREATE" => $arFields["DATE_CREATE"],
        );
       ?>

<div class="row">
	<div class="col-3 ">
		<h5><strong><? print_r($arFields["NAME"]); ?></strong><BR><small><span class="news-date-time"><?echo $arFields["DATE_CREATE"]; ?><BR><? //echo FormatDate("Q", $arFields["DATE_CREATE"]);?></span></small></h5>

	</div>
	<div class="col-auto justify-content-left">
		<? print_r($arFields["PREVIEW_TEXT"]);?>
	</div>
</div> 
<hr>
<?
    }
$arResult["NAVIGATION"] = $res->GetPageNavString("Страницы");
echo $arResult["NAVIGATION"];
?>
</div>

<h3><b><span style="color: #045f20; font-family: Times New Roman, Times;">Добавьте свой отзыв об этой организации</span></b></h3>
<form action="" method="post" enctype="multipart/form-data" class="form-rew">
 <input type="text" placeholder="Введите ваше имя" name="NAME" class="text"> <input type="text" placeholder="Введите ваш электронный адрес" name="EMAIL" class="text"><br>
 <br>
 <input type="text" placeholder="Введите ваш телефон" name="PHONE" class="text"> <textarea placeholder="Введите ваш отзыв" name="REVIEWS" class="text-mess"></textarea><br>
 <input type="submit" class="submit" value="Отправить" name="OK">
</form>
<?

if($_POST["OK"]){
	if(CModule::IncludeModule("iblock")){	
		if($_POST["NAME"]!="" && $_POST["EMAIL"]!="" && $_POST["REVIEWS"]!=""){
			echo "Спасибо, Ваше сообщение отправлено! В ближайшее время его проверят";
			$el = new CIBlockElement;
			$arLoadProductArray = Array(
			  "MODIFIED_BY"    	=> $USER->GetID(), // элемент изменен текущим пользователем
			  "IBLOCK_SECTION_ID" => false,          // элемент лежит в корне раздела
			  "IBLOCK_ID"      	=> 34, // id инфоблока, который вы создали
			  "NAME"           	=> $_POST["NAME"], // имя пользователя будет именем элемента
			  "ACTIVE"         	=> "N",            // убираем активность
			  "PREVIEW_TEXT"   	=> $_POST["REVIEWS"], // отзыв клиента
			  "SPRAV"			=> $arResult["ID"], // отзыв клиента
			  "DETAIL_TEXT"    	=> "E-Mail: " . $_POST["EMAIL"] . "\nТелефон: " . $_POST["PHONE"], // контактные данные клиента
			  "PREVIEW_PICTURE" => CFile::MakeFileArray($fileID)
			  );
			if($PRODUCT_ID = $el->Add($arLoadProductArray))
			  echo "";
			else
			  echo "";   
		}else{
			echo "Заполнены не все поля";
		}
	}
}
?>


мне нужно в свойство "SPRAV" который имеет привязку к элементам передать элемент текущий $arResult["ID"]
  • Вопрос задан
  • 400 просмотров
Решения вопроса 1
@PetrPo
в доках черным по белому написано

arFields
Массив вида Array("поле"=>"значение", ...), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле "PROPERTY_VALUES" - массив со всеми значениями свойств элемента в виде массива Array("код свойства"=>"значение свойства"). Где "код свойства" - числовой или символьный код свойства, "значение свойства" - одиночное значение, либо массив значений если свойство множественное


Ты создаешь новый элемент $el->Add($arLoadProductArray)

В $arLoadProductArray у тебя написано
$arLoadProductArray = Array(
//........................
        "SPRAV" => $arResult["ID"], // отзыв клиента
//........................


А надо
1. Если свойство НЕ множественное
$arLoadProductArray = Array(
//........................
        "PROPERTY_VALUES" => array(
			"SPRAV" => $arResult["ID"]
		),
//........................

2. Если свойство множественное
$arLoadProductArray = Array(
//........................
        "PROPERTY_VALUES" => array(
			"SPRAV" => array($arResult["ID"])
		),
//........................
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы