Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/proklung/bitrix.webform.bundle
Бандл для Битрикс + Symfony, предназначенный для работы с Web формами
https://github.com/proklung/bitrix.webform.bundle
bitrix bitrix-symfony php7 symfony-bundle
Last synced: 23 days ago
JSON representation
Бандл для Битрикс + Symfony, предназначенный для работы с Web формами
- Host: GitHub
- URL: https://github.com/proklung/bitrix.webform.bundle
- Owner: ProklUng
- Created: 2021-04-26T12:57:09.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-08-08T16:23:53.000Z (about 3 years ago)
- Last Synced: 2024-10-13T06:22:39.513Z (23 days ago)
- Topics: bitrix, bitrix-symfony, php7, symfony-bundle
- Language: PHP
- Homepage:
- Size: 35.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.MD
Awesome Lists containing this project
README
# Бандл для Битрикс + Symfony, предназначенный для работы с Web формами
## Зачем?
Ясно, что удобнее результаты форм сохранять в инфоблоках, но, _к сожалению_, приходится иметь дело с веб-формами. Чаще,
чем хотелось бы. Потому возникло желание облегчить себе жизнь, когда приходится сталкиваться с ними.Плюс набор валидаторов, совместимых с битриксовыми, для веб-форм (подцепляются автоматически при загрузке бандла).
**INTERNAL**
## Установка
`composer require proklung/bitrix-webform-bundle`
## Валидаторы
1) **Email** - при помощи [https://github.com/egulias/EmailValidator]()
2) **Laravel Validator** - при помощи [https://github.com/illuminate/validation]()
3) **Валидатор на число**
4) **Валидатор телефонного номера** - при помощи [https://github.com/giggsey/libphonenumber-for-php]()
5) **Валидатор на длину текста** (минимальная, максимальная)
5) **Валидатор на уникальность значения поля** - есть ли уже такое значение этого поля в базе веб-форм. Например,
можно ограничить таким образом введение много раз одного email или телефона.
5) **Валидатор на правильный http адрес**## Примеры
Вспомогательный сервис `CreateWebForm`, предназначенный для _более-менее_ комфортного создания форм (например, в миграциях).
```php
use Prokl\BitrixWebformBundle\Services\Migrations\CreateWebForm;/**
* @var CreateWebForm $creator
*/
$creator = container()->get('bitrix_form_bundle.create_form');$creator->deleteFormByCode('TESTING_FORM');
$creator->setNameForm('Тестировочная форма')
->setMenuItem(['ru' => 'Тестировочная форма', 'en' => 'Testing'])
->setSort(1000)
->setSidForm('TESTING_FORM')
->createForm()
->addTextField('EMAIL', 'Электронный адрес')
->addRadioButtonYesNow('RIGHTS', 'Вы гуманоид?')
->addTextField('NAME', 'Ваше имя')
->addTextareaField('COMMENTS', 'Комментарии')
->addDropdown('DROPS', 'Список', [
'LIST1', 'LIST2'
])
->addQuestions()
->createEmailTemplate()
->createStatus();
```#### Сохранение результатов
Именование полей: ответ формы называется NAME, в массиве параметрах процессора форм тоже должен
быть элемент с ключом NAME.```php
use Prokl\BitrixWebformBundle\Services\FormProcessor;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;class FormController extends AbstractController
{
public function action(Request $request, FormProcessor $processor) : Response
{
$params = $request->request->all();
$result = $processor->setFormCode('TESTING_FORM')
->setData($params)
->processForm();return new Response(['id_answer' => $result]);
}
}
```#### Поиск по формам
Именование полей - как и при сохранении результата.
```php
use Prokl\BitrixWebformBundle\Services\FormSearcher;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;class FormController extends AbstractController
{
public function action(Request $request, FormSearcher $searcher) : Response
{
/**
$params = [
'NAME' => '1111',
'EMAIL' => '[email protected]',
];
*/
$params = $request->request->all();
$result = $searcher->addFilter($params)
->setIdForm(8) // Допустимо использовать setFormCode('Символьный код формы')
->exist();
return new Response(['already_exists' => $result]);
}
}```
#### Хэлперы работы с формами
Класс `FormManager`:
- ```getFormIdBySID(string $sid)``` - ID формы по символьному коду;
- ```getFormAnswers(string $sid)``` - Ответы формы (не учитывает множественные вопросы!);
- ```getAllAnswersByIdQuestion(string $formCode, string $codeQuestion)``` - Все ответы по коду вопроса;
- ```getAnswersForm($questionID)``` - Ответ по ID вопроса;Класс `FormResult`:
- ```add(int $idWebform, array $arValuesForm = [])``` - Добавить в модуль веб-формы в форму данные. Входные
параметры - в битриксовом формате. Что-то типа:```html
array (
* [WEB_FORM_ID] => 3
* [web_form_submit] => Отправить
*
* [form_text_18] => aafafsfasdf
* [form_text_19] => q1241431342
* [form_text_21] => afsafasdfdsaf
* [form_textarea_20] =>
* [form_text_22] => fasfdfasdf
* [form_text_23] => 31243123412
*
* 18, 19, 21 - ID ответов у вопросов
* )
```