Здравствуйте.
Копаюсь в одном компоненте из маркетплейс.
Это компонент Комментарии к любому инфоблоку.
Очень удобно, работает хорошо.
Но заказчик просит чтоб пользователи могли добавлять аватарку при комментировании.
Создал новое свойство в инфоблоке AVA (тип файл).
В шаблоне компонента прописал форме
Код |
---|
<fo rm enctype="multipart/form-data" action="<?=$GLOBALS["APPLICATION"]->GetCurUri()?>" method='POST' on submit='return md_validate(this);'> |
Дальше в форме указал инпут для картинки
Код |
---|
<input name="AVA" type='file' class="w-45 reg" /> |
С формой как бы все.
Теперь ищу как этот компонент записывает данные в инфоблок.
Нашел файл компонента component.php по адресу /bitrix/components/
В нем нашел ко:
Код |
---|
case "add":
if ($comment->Add(
$arParams["OBJECT_ID"],
$arResult["POST"]["MESSAGE"],
intval($arResult["POST"]["AUTHOR"]),
$arResult["POST"]["PARENT"],
intval($arResult["POST"]["DEPTH"]),
$arResult["POST"]["NONUSER"],
$arResult["POST"]["EMAIL"],
$additional,
$ava = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/ava/".$_FILES['AVA']['name']),
$arParams["MODERATE"]
)
|
Как ведите, создал переменную $ava и присвоил ей создание картинки.
Дольше нашел еще один файл компонента component.php по адресу /bitrix/modules/
В нем:
Код |
---|
public function Add($object, $text, $author = false, $parent = false, $level = 1, $nonuser = false, $email = false, $additional = false, $ava, $moderation = false)
{
CModule::IncludeModule("iblock");
$section = self::GetSection($object);
$prop = array(
"USER" => $author,
"OBJECT" => $object,
"DEPTH" => $level,
"PARENT" => $parent,
"NONUSER" => $nonuser,
"EMAIL" => $email,
"ADDITIONAL" => $additional,
"AVA" => $ava,
);
$arF = array(
"NAME" => $nonuser.($nonuser && $email ? " " : "").($email ? "(".$email.")" : ""),
"IBLOCK_ID" => self::GetIBlock(),
"IBLOCK_SECTION_ID" => $section,
"ACTIVE" => $moderation ? "N" : "Y",
"PROPERTY_VALUES" => $prop,
"PREVIEW_TEXT" => $text,
"PREVIEW_TEXT_TYPE" => "html",
);
$el = new CIBlockElement();
if ($id = $el->add($arF))
{
return $id;
}
else
{
$GLOBALS["KHAYR_MAIN_COMMENT_COMMENT_ERROR"] = $el->LAST_ERROR;
return false;
}
}
|
Как видите, полю AVA (тип поля файл) кидаю содержимое переменной $ava.
Но картинка не добавляется.
Подскажите что не так.