Документация для разработчиков
Темная тема

Set

Описание и параметры

mixed
CForm::Set(
 array fields,
 mixed form_id = false,
 string check_rights = "Y"
)

Добавляет новую веб-форму или обновляет заданную. Возвращает ID обновленной или добавленной веб-формы в случае положительного результата, в противном случае - "false". Метод нестатический.

Примечание
При обновлении существующей веб-формы (или при добавлении новой веб-формы), автоматически обновляется тип почтового события (либо создаётся новый тип).

Параметры метода

Параметр Описание
fields Массив значений полей; в качестве ключей массива допустимы:
  • NAME* - заголовок веб-формы;
  • SID* - символьный идентификатор веб-формы;
  • C_SORT - индекс сортировки;
  • BUTTON - подпись к кнопке при создании или редактировании результата;
  • USE_RESTRICTIONS - использовать ограничения;
  • RESTRICT_USER - максимальное количество результатов от пользователя;
  • RESTRICT_TIME - минимальный промежуток времени между результатами;
  • DESCRIPTION - описание;
  • DESCRIPTION_TYPE - тип описания, допустимы следующие значения:
    • text - текст;
    • html - HTML код.
  • FILTER_RESULT_TEMPLATE - путь относительно корня к файлу, который будет использован для показа фильтра результатов в административной части модуля;
  • TABLE_RESULT_TEMPLATE - путь относительно корня к файлу, который будет использован для показа таблицы результатов в административной части модуля;
  • STAT_EVENT1 - идентификатор EVENT1 типа события для модуля "Статистика";
  • STAT_EVENT2 - идентификатор EVENT2 типа события для модуля "Статистика";
  • STAT_EVENT3 - дополнительный параметр события для модуля "Статистика";
  • arIMAGE - массив, описывающий изображение веб-формы, допустимы следующие ключи этого массива:
    • name - имя файла;
    • size - размер файла;
    • tmp_name - временный путь на сервере;
    • type - тип загружаемого файла;
    • del - если значение равно "Y", то изображение будет удалено;
    • MODULE_ID - идентификатор модуля "Веб-формы" ("form").
  • USE_CAPTCHA - использование капчи, доступны значения:
    • Y - выводить капчу в публичке,
    • N - не выводить капчу.
  • arSITE - массив идентификаторов сайтов, к которым будет привязана данная форма:
    array("ID_САЙТА_1", "ID_САЙТА_2", ...)
  • arMAIL_TEMPLATE - массив ID почтовых шаблонов, приписанных к данной форме:
    array("ID_ШАБЛОНА_1", "ID_ШАБЛОНА_2", ...)

    Примечание: Будут привязаны только шаблоны почтового события с идентификатором FILLING_FORM_[символьный идентификатор веб-формы]

  • arMENU - массив заголовков меню, отображаемого в административной части и ведущего на результаты данной формы:
    array("ID_ЯЗЫКА_1" => "МЕНЮ_1", "ID_ЯЗЫКА_2" => "МЕНЮ_2", ...)
  • arGROUP - массив, описывающий права групп пользователей на данную веб-форму:
    array("ID_ГРУППЫ_1" => "ПРАВО_1", "ID_ГРУППЫ_2" => "ПРАВО_2", ...)
* - обязательно к заполнению.
form_id ID обновляемой веб-формы.

Параметр необязательный. По умолчанию - "false" (добавление новой веб-формы).
check_rights Флаг необходимости проверки прав текущего пользователя. Возможны следующие значения:
  • Y - права необходимо проверить;
  • N - право не нужно проверять.
Для обновления параметров веб-формы необходимо иметь право [30] Полный доступ на форму, указанную в параметре form_id. Для добавления новой веб-формы необходимо иметь право [W] Полный доступ на модуль Веб-формы.

Параметр необязательный. По умолчанию - "Y" (права необходимо проверить).

Примеры использования

<?
/*************************************************
             Добавление веб-формы
*************************************************/

// создадим массив описывающий изображение 
// находящееся в файле на сервере
$arIMAGE = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/web_form.gif");
$arIMAGE["MODULE_ID"] = "form";

$arFields = array(
    "NAME"              => "Анкета посетителя",
    "SID"               => "VISITOR_FORM",
    "C_SORT"            => 300,
    "BUTTON"            => "Сохранить",
    "DESCRIPTION"       => "Заполните пож-та анкету",
    "DESCRIPTION_TYPE"  => "text",
    "STAT_EVENT1"       => "form",
    "STAT_EVENT2"       => "visitor_form",
    "arSITE"            => array("r1"),
    "arMENU"            => array("ru" => "Анкета посетителя", "en" => "Visitor Form"),
    "arGROUP"           => array("2" => "15", "3" => "20"),
    "arIMAGE"           => $arIMAGE
    );

// добавим новую веб-форму
$NEW_ID = CForm::Set($arFields);
if ($NEW_ID>0) echo "Добавлена веб-форма с ID=".$NEW_ID;
else // ошибка
{
    // выводим текст ошибки
    global $strError;
    echo $strError;
}
?>
<?
// пример обновления веб-формы параметры которой были визуально 
// отредактированы в административной части

$w = CGroup::GetList($v1, $v2, Array("ADMIN"=>"N"), $v3);
$arGroups = array();
while ($wr=$w->Fetch()) $arGroups[] = array("ID"=>$wr["ID"], "NAME"=>$wr["NAME"]);

$z = CLanguage::GetList($v1, $v2, array("ACTIVE" => "Y"));
$arFormMenuLang = array();
while ($zr=$z->Fetch()) $arFormMenuLang[] = array("LID"=>$zr["LID"], "NAME"=>$zr["NAME"]);

$rs = CSite::GetList(($by="sort"), ($order="asc"));
while ($ar = $rs->Fetch()) 
{
    if ($ar["DEF"]=="Y") $def_site_id = $ar["ID"];
    $arrSites[$ar["ID"]] = $ar;
}

if ((strlen($save)>0 || strlen($apply)>0) && $REQUEST_METHOD=="POST")
{
    $arIMAGE_ID = $HTTP_POST_FILES["IMAGE_ID"];
    $arIMAGE_ID["MODULE_ID"] = "form";
    $arIMAGE_ID["del"] = ${"IMAGE_ID_del"};
    $arFields = array(
        "NAME"                      => $NAME,
        "SID"                       => $SID,
        "C_SORT"                    => $C_SORT,
        "BUTTON"                    => $BUTTON,
        "DESCRIPTION"               => $DESCRIPTION,
        "DESCRIPTION_TYPE"          => $DESCRIPTION_TYPE,
        "FILTER_RESULT_TEMPLATE"    => $FILTER_RESULT_TEMPLATE,
        "TABLE_RESULT_TEMPLATE"     => $TABLE_RESULT_TEMPLATE,
        "STAT_EVENT1"               => $STAT_EVENT1,
        "STAT_EVENT2"               => $STAT_EVENT2,
        "STAT_EVENT3"               => $STAT_EVENT3,
        "arIMAGE"                   => $arIMAGE_ID,
        "arSITE"                    => $arSITE,
        "arMAIL_TEMPLATE"           => $arMAIL_TEMPLATE
        );

    // меню
    $arMENU = array();
    reset($arFormMenuLang);
    while (list(,$arrL)=each($arFormMenuLang))
    {
        $var = "MENU_".$arrL["LID"];
        global $$var;
        $arMENU[$arrL["LID"]] = $$var;
    }
    $arFields["arMENU"] = $arMENU;

    // права доступа
    $arGROUP = array();
    reset($arGroups);
    while (list(,$arrG)=each($arGroups))
    {
        $var = "PERMISSION_".$arrG["ID"];
        global $$var;
        $arGROUP[$arrG["ID"]] = $$var;
    }
    $arFields["arGROUP"] = $arGROUP;
    
    if ($ID = CForm::Set($arFields, $ID))
    {
        if (strlen($strError)<=0)
        {
            if (strlen($save)>0) LocalRedirect("form_list.php?lang=".LANGUAGE_ID); 
            else LocalRedirect("form_edit.php?ID=".$ID."〈=".LANGUAGE_ID);
        }
    }
    $DB->PrepareFields("b_form");
}
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2021, «1С-Битрикс», 2021
Наверх