Poslední Sobota - Formuláře v Nette 2.1

Post on 19-Jun-2015

1,094 views 2 download

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