modul-is / form
Simplified nette forms
Installs: 7 362
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 0
Open Issues: 7
Requires
- php: ^8.2
- kravcik/latte-font-awesome-icon: ^1
- nette/application: ^3.0 || ^4.0
- nette/forms: ^3.2.5
- nette/utils: ^4.0
Requires (Dev)
README
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
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
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 optionsaddMultiWhisperer()
- same as whisperer, more options can be selectedaddDuplicator()
- container which can be duplicated many timesaddDependentSelect()
- select box that can change options via ajax based on change of another input(s)addDependentMultiSelect()
- same as DependantSelect, but more options can be selectedaddDate()
- date input, can limit min and max date
Custom settings
Form
setTitle()
- addcard-header
div with titlesetColor()
- set color of formsetAjax()
- form is submitted via ajaxaddBox()
- all inputs added after this call will render in new cardsetFloatingLabel()
- inputs will be rendered with floating labelssetRenderInline()
- label and input are rendered each in separate rowsetRenderManually()
- set manual render, template with same name as form is used (eg. fileMyForm.php
->myForm.latte
)
Groups
Form is rendered in BS5 card - each card represents one group
Inputs are rendered in card-body
div
Submitters, links and buttons in card-footer
Container
Container works as standard Nette Continer and has these new features
setId()
- add html id to outer div of containershowCard()
- show container as BS5 cardsetTitle()
- show title of container (only works when container is rendered as card)setColor()
- set color of conatiner (only works when container is rendered as card)
Inputs
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 insted of basic render (All inputs)setPrepend()
- adds prepend part to input group (Text inputs, Select boxes)setAppend()
- adds append part to input group (Text inputs, Select boxes)setRenderInline()
- render label and input each in separate row, overwritesrenderInline
setting from Form (All non-button inputs)setFloatingLabel()
- input will be rendered with 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, Selec boxes)setWrapClass()
- set class to outer div around label and input - overwrites basiccol-
class (Text inputs, Checkbox, Lists, Selec boxes)setLabelWrapClass()
- set class to wrap div around label - overwrites basiccol-
class (Text inputs, Checkbox, Lists, Selec boxes)setInputWrapClass()
- set class to wrap div around input - overwrites basiccol-
class (Text inputs, Checkbox, Lists, Selec boxes)
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');