Разберём процесс добавления нового элемента с помощью API Битрикса и HTML формы. Для начала сформируем саму форму с различными видами полей:
<form method="POST" enctype="multipart/form-data">
ФИО<br>
<input type="text" name="name"><br><br>
Email<br>
<input type="email" name="email"><br><br>
Цвет<br>
<label><input name="color" type="radio" value="Белый">Белый</label>
<label><input name="color" type="radio" value="Синий">Синий</label>
<label><input name="color" type="radio" value="Красный">Красный</label><br><br>
Описание<br>
<textarea name="about"></textarea><br><br>
Загрузить файл<br>
<input type="file" name="dw"><br><br>
<input type="submit" name="create" value="Отправить">
</form>
В параметрах инфоблока необходимо создать дополнительные свойства, куда будут загружаться данные из формы. Присвоим им следующие коды:
- ФИО - USERNAME (тип строка);
- Email - EMAIL (тип строка);
- Цвет - COLOR (тип список);
- Описание - ABOUT (тип text/html);
- Загрузить файл - DW (тип файл).
Для большинства типов свойств порядок загрузки данных одинаков: просто присваиваем значение из формы переменной
$PROP с кодом свойства. Также не стоит забывать об очистке массива перед заполнением данными. Выглядит это всё так:
$PROP = array();
$PROP['EMAIL'] = $_POST['email'];
$PROP['USERNAME'] = $_POST['name'];
$PROP['COLOR'] = $_POST['color'];
$PROP['ABOUT'] = $_POST['about'];
С загрузкой файла дела обстоят немного иначе. В частности, чтобы загрузить файл, необходимо использовать переменную
$_FILES с кодом свойства:
$PROP['DWFILE'] = $_FILES['dw'];
В итоге полная страница с описанными выше полями выглядит следующим образом:
<?CModule::IncludeModule("iblock");
if(isset($_POST['create'])) {
$PROP = array();
$PROP['EMAIL'] = $_POST['email'];
$PROP['USERNAME'] = $_POST['name'];
$PROP['COLOR'] = $_POST['color'];
$PROP['ABOUT'] = $_POST['about'];
$PROP['DWFILE'] = $_FILES['dw'];
$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(),
"IBLOCK_ID" => 27,
"PROPERTY_VALUES" => $PROP,
"NAME" => $PROP['USERNAME'],
"ACTIVE" => "Y",
);
if($PRODUCT_ID = $el->Add($arLoadProductArray)) {
echo "New ID: ".$PRODUCT_ID;
$successNewReg = $PRODUCT_ID;
} else {
echo "Error: ".$el->LAST_ERROR;
};
};?>
<form method="POST" enctype="multipart/form-data">
ФИО<br>
<input type="text" name="name"><br><br>
Email<br>
<input type="email" name="email"><br><br>
Цвет<br>
<label><input name="color" type="radio" value="Белый">Белый</label>
<label><input name="color" type="radio" value="Синий">Синий</label>
<label><input name="color" type="radio" value="Красный">Красный</label><br><br>
Описание<br>
<textarea name="about"></textarea><br><br>
Загрузить файл<br>
<input type="file" name="dw"><br><br>
<input type="submit" name="create" value="Отправить">
</form>