poslední sobota - formuláře v nette 2.1
TRANSCRIPT
LOW LEVEL
Low-level přístup je obdobou práce s $_POST, ale dostáváme ošetřené data.
Potřebujeme vykreslit checkboxy u záznamů, které čteme z databáze. Dopředu nevíme, kolik jich bude, jaké budou mít ID. Rovnou proto kreslíme checkboxy do šablony s name="sel[]"
$values = $form->getHttpData(
$form::DATA_TEXT, 'sel[] ');
Pole zatržených checkboxů pak získáme metodou getHttpData()
KRESLENÍ
<form n:name=myForn><label n:name=user><input n:name=user><select n:name=country><textarea n:name=note>
</form>Šablonu s formulářem snadno propojíte pomocí atributů n:name
Renderování, například RadioListu, po jednotlivých elementech.
<label><input>...</label>
Checkboxy a radiolisty se nyní renderují v tomto praktičtějším tvaru.
Bootstrap 2 & 3
Příklady najdete v /examples/forms
$form->getOwnErrors()
Renderujte chybové hlášky přímo u každého prvku. Nad formulář umístěte jen nepřiřazené hlášky. A dejte formuláři focus.
FÍČURY
Form::INTEGERForm::URL
Form::INTEGER přetypuje na integerForm::URL doplní chybějící http://
addRule($form::MAX_LENGTH, …, $form['max']
);Každé pravidlo lze provázat dynamicky s hodnotou jiného prvku.
$form->addCheckboxList()
Novinkou je CheckboxList
MULTIPLE FILE
UPLOAD
->addUpload('files', 'Soubory', TRUE);
$input-> setOmitted()
Vynechá prvek z $form->getValues()
$button-> setValidationScop
e([…])Lze omezit, které prvky má tlačítko validovat. NULL znamená všechny!
Jak psát vlastní prvky?
Psát vlastní prvky je nyní mnohem jednodušší. Příklad najdete v /examples/forms/DateInput.php
ChoiceControl MultiChoiceControl
Pokud vytváříte prvek pro výběr z více možností, můžete podědit tyto abstraktní třídy.
Nette\Forms\Helpers::
createSelectBox()
Snadno vygeneruje <select>
Nette\Forms\Helpers::
createInputList()
Snadno vygeneruje skupinu <input>ů
@davidgrudl
@geekovo