PHPackages                             kavalhub/form-generator - 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. [Validation &amp; Sanitization](/categories/validation)
4. /
5. kavalhub/form-generator

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

kavalhub/form-generator
=======================

Easily create, validate, and display forms.

2.0.1(3d ago)022MITPHPPHP ^8.2CI passing

Since Mar 29Pushed 3d ago1 watchersCompare

[ Source](https://github.com/kavalhub/form-generator)[ Packagist](https://packagist.org/packages/kavalhub/form-generator)[ Docs](https://github.com/kavalhub/form-generator.git)[ RSS](/packages/kavalhub-form-generator/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (2)Versions (19)Used By (0)

form-generator
==============

[](#form-generator)

PHP-библиотека для программного создания HTML-форм, привязки данных из запроса, валидации и рендеринга с опциональным Bootstrap-декоратором.

Требования
----------

[](#требования)

- PHP ^8.2
- Composer

Установка
---------

[](#установка)

```
composer require kavalhub/form-generator
```

Быстрый старт
-------------

[](#быстрый-старт)

```
use Kavalhub\FormGenerator\Form\Form;
use Kavalhub\FormGenerator\Form\InputSubmit;
use Kavalhub\FormGenerator\Form\InputText;
use Kavalhub\FormGenerator\Request\ElementRequest;
use Kavalhub\FormGenerator\Validator\ElementValidator;

$form = (new Form('contact'))
    ->addElement(
        (new InputText('email'))->setRequired()->setPlaceholder('Email')
    )
    ->addElement(
        (new InputSubmit('send'))->setDefaultValue('Отправить')
    );

$request = new ElementRequest();
$validator = new ElementValidator($request);
$submit = $form->getByName('send');

if ($validator->checkSubmit($submit) && $validator->handle($form)) {
    // данные валидны
}

echo $form->getHtml();
```

Bootstrap-декоратор
-------------------

[](#bootstrap-декоратор)

```
use Kavalhub\FormGenerator\Decorator\Bootstrap\BootstrapDecorator;

$decorator = new BootstrapDecorator($form);
echo $decorator->getHtml();
```

CSRF-защита (opt-in)
--------------------

[](#csrf-защита-opt-in)

```
$form = (new Form('secure'))
    ->enableCsrf()
    ->addElement(/* ... */);
```

Токен сохраняется в сессии и проверяется при `ElementValidator::handle()`.

Декларативное создание элементов
--------------------------------

[](#декларативное-создание-элементов)

```
use Kavalhub\FormGenerator\Fabric\ElementFabric;
use Kavalhub\FormGenerator\Form\Group;
use Kavalhub\FormGenerator\Form\InputText;

$group = ElementFabric::create([
    ElementFabric::ELEMENT => Group::class,
    ElementFabric::NAME => 'profile',
    ElementFabric::METHOD => [
        [
            ElementFabric::ADD_ELEMENT => [
                ElementFabric::ELEMENT => InputText::class,
                ElementFabric::NAME => 'name',
                ElementFabric::METHOD => [
                    ['setRequired' => true],
                ],
            ],
        ],
    ],
]);
```

Поддерживаемые элементы
-----------------------

[](#поддерживаемые-элементы)

КлассОписание`Form`Контейнер ```Group`Группа полей с префиксом имени`InputText`, `InputPassword`, `InputNumber`Текстовые поля`InputCheckbox`, `InputRadio`Переключатели`Select`, `Option`Выпадающий список`Textarea`Многострочный ввод`InputHidden`, `InputSubmit`, `Button`Скрытые и кнопки`Label`, `Nav`, `Link`Разметка`Table`, `Tr`, `Td`, `Th`ТаблицыБезопасность
------------

[](#безопасность)

- Значения полей, placeholder, href и сообщения об ошибках экранируются через `HtmlEscaper`.
- `Label::setAllowHtml()` — явное разрешение HTML в подписи (по умолчанию выключено).
- `ElementRequest` читает только `$_POST` (или переданный массив в конструкторе).
- CSRF включается явно через `Form::enableCsrf()`.
- Папка `example/` — демонстрация интеграции; для БД используйте переменные окружения (см. `example/.env.example`).

Тесты
-----

[](#тесты)

```
composer install
composer test
```

Лицензия
--------

[](#лицензия)

MIT

###  Health Score

46

↑

FairBetter than 92% of packages

Maintenance99

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity59

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 ~30 days

Recently: every ~103 days

Total

16

Last Release

3d ago

Major Versions

1.0.13 → 2.0.02026-07-01

PHP version history (2 changes)1.0.0PHP ~8.2.0

2.0.0PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/204548407?v=4)[kavalhub](/maintainers/kavalhub)[@kavalhub](https://github.com/kavalhub)

---

Top Contributors

[![kavalhub](https://avatars.githubusercontent.com/u/204548407?v=4)](https://github.com/kavalhub "kavalhub (23 commits)")

---

Tags

phpformValidation form

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/kavalhub-form-generator/health.svg)

```
[![Health](https://phpackages.com/badges/kavalhub-form-generator/health.svg)](https://phpackages.com/packages/kavalhub-form-generator)
```

###  Alternatives

[laminas/laminas-form

Validate and display simple and complex forms, casting forms to business objects and vice versa

8212.8M140](/packages/laminas-laminas-form)[progsmile/request-validator

Simple PHP Request Validator

37114.5k1](/packages/progsmile-request-validator)[janvince/smallcontactform

Simple but flexible multi language contact form builder with custom fields, validation and passive antispam

307.9k](/packages/janvince-smallcontactform)

PHPackages © 2026

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