PHPackages                             proklung/bitrix-webform-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. proklung/bitrix-webform-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

proklung/bitrix-webform-bundle
==============================

Бандл для Битрикс + Symfony, предназначенный для работы с Web формами

1.1.2(4y ago)2461MITPHPPHP &gt;=7.3

Since Apr 26Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ProklUng/bitrix.webform.bundle)[ Packagist](https://packagist.org/packages/proklung/bitrix-webform-bundle)[ RSS](/packages/proklung-bitrix-webform-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (8)Versions (6)Used By (1)

Бандл для Битрикс + Symfony, предназначенный для работы с Web формами
=====================================================================

[](#бандл-для-битрикс--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. **Валидатор на длину текста** (минимальная, максимальная)
6. **Валидатор на уникальность значения поля** - есть ли уже такое значение этого поля в базе веб-форм. Например, можно ограничить таким образом введение много раз одного email или телефона.
7. **Валидатор на правильный http адрес**

Примеры
-------

[](#примеры)

Вспомогательный сервис `CreateWebForm`, предназначенный для *более-менее* комфортного создания форм (например, в миграциях).

```
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.

```
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]);

  }
}
```

#### Поиск по формам

[](#поиск-по-формам)

Именование полей - как и при сохранении результата.

```
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@email.ru',
        ];
       */
      $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 = [])` - Добавить в модуль веб-формы в форму данные. Входные параметры - в битриксовом формате. Что-то типа:

```
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 ответов у вопросов
     *   )
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~26 days

Total

5

Last Release

1743d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9210c86ee6734e537eaf22c0f2fe7a965451e340e39e1aae2b74013f24c2660d?d=identicon)[gedovan](/maintainers/gedovan)

---

Top Contributors

[![ProklUng](https://avatars.githubusercontent.com/u/19857467?v=4)](https://github.com/ProklUng "ProklUng (11 commits)")

---

Tags

bitrixbitrix-symfonyphp7symfony-bundlebitrixbitrix-symfonybitrix-bundle

### Embed Badge

![Health badge](/badges/proklung-bitrix-webform-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/proklung-bitrix-webform-bundle/health.svg)](https://phpackages.com/packages/proklung-bitrix-webform-bundle)
```

###  Alternatives

[netgen/layouts-core

Netgen Layouts enables you to build and manage complex web pages in a simpler way and with less coding. This is the core of Netgen Layouts, its heart and soul.

3689.4k10](/packages/netgen-layouts-core)[codefog/contao-haste

haste extension for Contao Open Source CMS

42650.8k139](/packages/codefog-contao-haste)[spomky-labs/pwa-bundle

Progressive Web App Manifest Generator Bundle for Symfony.

6144.4k1](/packages/spomky-labs-pwa-bundle)[symfony/ux-cropperjs

Cropper.js integration for Symfony

19280.3k3](/packages/symfony-ux-cropperjs)[netgen/content-browser

Netgen Content Browser is a Symfony bundle that provides an interface which selects items from any kind of backend and returns the IDs of selected items back to the calling code.

14112.1k8](/packages/netgen-content-browser)[pentiminax/ux-datatables

DataTables.net integration for Symfony

605.6k](/packages/pentiminax-ux-datatables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
