Skip to content

Instantly share code, notes, and snippets.

@dermanov-ru
Created July 10, 2019 18:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dermanov-ru/c184c7ef75b803a87ccdf2abb4a573a7 to your computer and use it in GitHub Desktop.
Save dermanov-ru/c184c7ef75b803a87ccdf2abb4a573a7 to your computer and use it in GitHub Desktop.
Пример создания веб-формы через миграцию и использование
<?
// include core
/*
* создает новую форму и вопросы всех возможных типов
* */
// у формы обязательно должен быть хоть один статус и один из них обязательно по умолчанию
// иначе не сохранить результат в админке или через стд компоненты
$status = new \Webform\Install\StatusBuilder();
$status->add("Первый", true);
$status->add("Второй");
$status->add("Третий");
$n = rand(0, 100);
$formId = \Webform\Install\Installer::addForm("test $n", "test_" . $n, $status);
$questions = new \Webform\Install\QuestionBuilder();
$questions->addStringQuestion("string1", "s1");
$questions->addDateQuestion("date1", "d1");
$enum = new Webform\Install\EnumQuestionAnswerBuilder();
$enum->add("enum var 1", "e1");
$enum->add("enum var 2", "e2");
$questions->addEnumQuestion("enum 1", "en1", $enum);
$questions->addUrlQuestion("url 1", "u1");
$enum = new Webform\Install\EnumQuestionAnswerBuilder("radio");
$enum->add("radio val 1", "r1");
$enum->add("radio val 2", "r2");
$questions->addEnumQuestion("r1", "r1", $enum);
$enum = new Webform\Install\EnumQuestionAnswerBuilder("dropdown");
$enum->add("dropdown val 1", "d1");
$enum->add("dropdown val 2", "d2");
$questions->addEnumQuestion("dropdown 1", "dr1", $enum);
$questions->addHiddenQuestion("hidden 1", "h1");
$questions->addEmailQuestion("email1", "e1");
$questions->addFileQuestion("file 1", "f1");
$questions->addPasswordQuestion("password 1", "p1");
\Webform\Install\Installer::addQuestions($formId, $questions);
\Webform\Install\Installer::addEmailTpl($formId);
<?php
/**
* Created by PhpStorm.
* Date: 24.06.2017
* Time: 12:01
*
* @author dev@dermanov.ru
*/
/*
* на текущий момент предполашается, что вы уже создали (через миграцию) веб-форму с кодом ORDER_FORM
* и у вас есть поля
* - PRODUCT_ID
* - NAME
* - PHONE
*
* теперь нужно вставить эти поля в полученную верстку веб-формы.
*
* для использования Webform\Finder - нужно
* - положить класс в local/lib
* - настроить автолоадер на проекте
* */
$formConsultationHelper = new \Webform\Finder\FormHelper("ORDER_FORM");
// если нужен будет ID формы, например при вызове компонента веб-формы
//$formId = $formConsultationHelper->getId();
// еще можно так
// new \Webform\Finder\FormHelper("ORDER_FORM")->getId();
/*
* эту форму можно сабмитить на стд комопонент веб-форм - дальше он сам справится с обработкой результатов.
* $formConsultationHelper->showFormHiddenInputs() - выводит обязательные для стд компонента параметры.
* */
?>
<form action="" method="post" class="contact_form row " data-h5-instanceid="0" novalidate="novalidate" enctype="multipart/form-data">
<?$formConsultationHelper->showFormHiddenInputs()?>
<input type="hidden" name="<?=$formConsultationHelper->getQuestionInputName("PRODUCT_ID")?>" value="<?=$_item["ID"]?>">
<div class="cf_response"></div>
<p class="col-sm-12 kl-fancy-form">
<input type="text" name="<?=$formConsultationHelper->getQuestionInputName("NAME")?>" id="cf_name" class="form-control" placeholder="Представьтесь пожалуйста *" value="" tabindex="1" maxlength="35" required="" >
<label class="control-label">Имя</label>
</p>
<p class="col-sm-12 kl-fancy-form">
<input type="text" name="<?=$formConsultationHelper->getQuestionInputName("PHONE")?>" id="cf_name" class="form-control js_phone_input_mask" placeholder="Ваш телефон *" value="" tabindex="2" maxlength="35" required="" >
<label class="control-label">Телефон</label>
</p>
<p class="col-sm-12">
<button class="btn btn-fullcolor mt-10" type="submit">Отправить</button>
</p>
</form>
@dermanov-ru
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment