PHPackages                             modul-is/form - 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. [Templating &amp; Views](/categories/templating)
4. /
5. modul-is/form

ActiveLibrary[Templating &amp; Views](/categories/templating)

modul-is/form
=============

Simplified nette forms

v1.5.1(yesterday)412.3k↓52.9%[20 issues](https://github.com/modul-is/form/issues)[1 PRs](https://github.com/modul-is/form/pulls)MITPHPPHP ^8.4

Since Aug 31Pushed 1w ago2 watchersCompare

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

READMEChangelog (10)Dependencies (35)Versions (51)Used By (0)

Nette form with custom BS5 renderer
===================================

[](#nette-form-with-custom-bs5-renderer)

This library allows you to spend less time writing templates for Nette forms - it contains renderers for form, containers as well as all inputs

Getting started
---------------

[](#getting-started)

Easiest way to create form is to create component which extends `FormComponent` class

```
class MyForm extends \ModulIS\Form\FormComponent
{
	public function createComponentForm(): Form
	{
		$form = $this->getForm();

		...

		return $form;
	}
}

```

Then you just add inputs to form, create `MyForm` component and all done!

Inputs
------

[](#inputs)

Form supports all of the default Nette inputs and adds new ones

- `addLink()` - Button with link (eg. reset, go back buttons)
- `addWhisperer()` - select box with whisperer which filters options
- `addMultiWhisperer()` - same as whisperer, more options can be selected
- `addDuplicator()` - container which can be duplicated many times
- `addDependentSelect()` - select box that can change options via ajax based on change of another input(s)
- `addDependentMultiSelect()` - same as DependentSelect, but more options can be selected
- `addDate()` - date input, can limit min and max date

Custom settings
---------------

[](#custom-settings)

### Form

[](#form)

- `setTitle()` - add `card-header` div with title
- `setColor()` - set color of form
- `setAjax()` - form is submitted via ajax
- `addBox()` - all inputs added after this call will render in new card
- `setFloatingLabel()` - inputs will be rendered with [floating labels](https://getbootstrap.com/docs/5.0/forms/floating-labels/)
- `setRenderInline()` - label and input are rendered each in separate row
- `setButtonClass()` - default CSS class for all form buttons (e.g. `rounded rounded-4`); can be overridden by `setClass()` on individual buttons
- `setRenderManually()` - set manual render, template with same name as form is used (eg. file `MyForm.php` -&gt; `myForm.latte`)

### Groups

[](#groups)

Form is rendered in BS5 [card](https://getbootstrap.com/docs/5.0/components/card/) - each card represents one group

Inputs are rendered in `card-body` div

Submitters, links and buttons in `card-footer`

### Container

[](#container)

Container works as standard Nette Container and has these new features

- `setId()` - add html id to outer div of container
- `showCard()` - show container as BS5 [card](https://getbootstrap.com/docs/5.0/components/card/)
- `setTitle()` - show title of container (only works when container is rendered as card)
- `setColor()` - set color of container (only works when container is rendered as card)

### Currency input

[](#currency-input)

`addCurrency()` - numeric input that visually formats values with thousands separators (e.g. `1 000 000`) but returns a plain integer on submit. Currency label is appended to the input.

Default currency can be set globally for the whole project (e.g. in bootstrap or DI extension):

```
\ModulIS\Form\Control\CurrencyInput::setDefaultCurrency('CZK');
```

Per-input currency can be set via:

```
$form->addCurrency('price', 'Price', 'EUR');
// or
$form->addCurrency('price', 'Price')->setCurrency('EUR');
```

### Inputs

[](#inputs-1)

Some inputs provide new features

- `setIcon()` - add icon to input or button (Buttons, Links, Text inputs)
- `setColor()` - add color to input or button (Buttons, Links, Checkbox, Lists)
- `setTemplate()` - add custom latte template instead of basic render (All inputs)
- `setPrepend()` - adds prepend part to [input group](https://getbootstrap.com/docs/5.0/forms/input-group/) (Text inputs, Select boxes)
- `setAppend()` - adds append part to [input group](https://getbootstrap.com/docs/5.0/forms/input-group/) (Text inputs, Select boxes)
- `setRenderInline()` - render label and input each in separate row, overwrites `renderInline` setting from Form (All non-button inputs)
- `setFloatingLabel()` - input will be rendered with [floating labels](https://getbootstrap.com/docs/5.0/forms/floating-labels/) (Text inputs, Select box)
- `setAutorenderSkip()` - skips rendering of input, eg. if input is rendered as part of another input with custom template (All inputs)
- `setTooltip()` - add icon with tooltip to input (Text inputs, Checkbox, Lists, Select boxes)
- `setQuickCopy()` - add button to copy input value to clipboard (Text inputs, TextArea)
- `setWrapClass()` - set class to outer div around label and input - overwrites basic `col-` class (Text inputs, Checkbox, Lists, Select boxes)
- `setLabelWrapClass()` - set class to wrap div around label - overwrites basic `col-` class (Text inputs, Checkbox, Lists, Select boxes)
- `setInputWrapClass()` - set class to wrap div around input - overwrites basic `col-` class (Text inputs, Checkbox, Lists, Select boxes)

### Duplicator example

[](#duplicator-example)

```
$duplicator = $form->addDuplicator('duplicator', function(\ModulIS\Form\DuplicatorContainer $container)
{
	$container->addText('text', 'Text input');

	$container->addSubmit('del', 'Smazat');
}, 1);

$duplicator->addSubmit('add', 'Přidat');

```

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance79

Regular maintenance activity

Popularity28

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 78.6% 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 ~24 days

Recently: every ~5 days

Total

44

Last Release

1d ago

Major Versions

v1.5.1 → v3.x-dev2026-07-03

PHP version history (2 changes)v1.0.0PHP ^8.2

v1.3.0PHP ^8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10499130?v=4)[Pavel Kravčík](/maintainers/kravcik)[@kravcik](https://github.com/kravcik)

---

Top Contributors

[![vodictomas](https://avatars.githubusercontent.com/u/11019496?v=4)](https://github.com/vodictomas "vodictomas (320 commits)")[![kravcik](https://avatars.githubusercontent.com/u/10499130?v=4)](https://github.com/kravcik "kravcik (31 commits)")[![KrejciFili](https://avatars.githubusercontent.com/u/91294159?v=4)](https://github.com/KrejciFili "KrejciFili (21 commits)")[![krumld](https://avatars.githubusercontent.com/u/54597935?v=4)](https://github.com/krumld "krumld (18 commits)")[![spulakk](https://avatars.githubusercontent.com/u/34043062?v=4)](https://github.com/spulakk "spulakk (17 commits)")

---

Tags

phpnetteformbs5

### Embed Badge

![Health badge](/badges/modul-is-form/health.svg)

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

###  Alternatives

[ublaboo/datagrid

DataGrid for Nette Framework: filtering, sorting, pagination, tree view, table view, translator, etc

3042.0M26](/packages/ublaboo-datagrid)[contributte/forms-bootstrap

Nette extension for Bootstrap forms

221.1M4](/packages/contributte-forms-bootstrap)[tomaj/nette-bootstrap-form

Nette bootstrap form renderer

31455.7k11](/packages/tomaj-nette-bootstrap-form)[nette/web-project

Nette: Standard Web Project

10993.3k](/packages/nette-web-project)[nextras/forms-rendering

Rendering helpers for Nette Framework Forms.

16103.8k2](/packages/nextras-forms-rendering)[nasext/dependent-select-box

Dependent Select Box for Nette Framework.

21271.2k2](/packages/nasext-dependent-select-box)

PHPackages © 2026

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