Nella Framework – Krok za krokem – Formuláře

Patrik Votoček

Jednou z killer-feature Nette Frameworku jsou bezpochyby formuláře. Nicméně nám v praxi chybělo / chybí pár vlastnosti a funkcí. A tak jsme si je v Nella Frameworku přidali.

Předně bych chtěl upozornit, že takřka všechny vlastnosti Nella formulářů jsou vázány na “AppForm”((Nette\Application\UI\Form)) a nepočítá se s jejich využitím mimo Nette Framework.

Rozšířená podpora “WebForms 2.0”

Nebo také HTML5 Formuláře.

Všechny tyto HTML5 prvky lze vytvořit také v Nette, nikoliv však tak jednoduše.

$form = new Form;

// Nette Framework
$form->addText('email', "E-mail")
	->setAttribute('type', "email")
	->addCondition(Form::FILLED)
		->addRule(Form::EMAIL);

// Nella Framewok
$form->addEmail('email', "E-mail");

Date, DateTime, Time

Práce s datem ve formulářích není sranda. U HTML5 formulářů už vůbec. Implementace napříč prohlížeči je různá (“o vzhledu nemluvě”((ve většině případů vypadá fakt hnusně))).

V Nelle žádný problém - prostě napíšete $form->addDate('birthday', "Birthday");. V případě, že máte zapnutý “překladač”((ten si popíšeme v některém z dalších dílů)), se o formát data postará tento .

Pokud ale překladač zapnutý nemáte, máte možnost formát specifikovat “ručně” $form['birthday']->format = "d. m. Y". Používají se standartní modifikátory z PHP.

Poznámka: implementace klientské části starající se o formuláře je v době psaní tohoto článku značně rozpracována, proto ji zde popisovat nebudu.

Upload více souborů aka MFU

Pro upload více souborů tu máme Multiple File Uploader, který je taktéž součástí Nella Frameworku.

Implementace něčeho takového už je o poznání složitější, proto je potřeba před použitím MFU ve formuláři provést jeho registraci (nejlépe v bootsrapu).

Nella\Forms\Controls\MultipleFileUpload::register(
	$httpRequest, $container->expand('%tempDir%/uploads')
);

Prvním parametrem je - jak už název proměnné napovídá - objekt Nette\Http\Request, druhým pak cesta ke složce, kam si má MFU ukládat dočasné soubory. Třetí a čtvrtý parametr jsou volitelné, pomocí třetího můžete definovat callback pro detekci upload tokenu (což mimo jiné signalizuje, že se jedná o požadavek z MFU) a pomocí čtvrtého expiraci slouborů v dočasné složce.

Ve výchozím stavu se detekce provádí na základě hlaviček ‘X-Uploader’ a ‘X-Nella-MFU-Token’, kde hodnota druhé jmenované je vrácena jako onen token.

Samotné použití MFU je pak již jednoduché: $form->addMultipleUpload('images', "Images").

Další fíčurky

Štítky Pro práci se štítky byl do Nella Frameworku naportován TagInput od Mikuláše Dítěte.

Inicializace Další vlastností, ryze Nella\Forms, je metoda setup, která je volána automaticky po připojení formuláře k presenteru.

To je pro dnešek vše.

« »