From ef111a7ae823643fddf5a17ee8db9dabf51d6ee8 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sun, 5 May 2024 21:20:31 +0200 Subject: [PATCH] wip warning --- forms/cs/controls.texy | 20 +++++++++++++------- forms/cs/rendering.texy | 20 +++++++++----------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/forms/cs/controls.texy b/forms/cs/controls.texy index 0da6b080a6..35000e6a07 100644 --- a/forms/cs/controls.texy +++ b/forms/cs/controls.texy @@ -20,13 +20,9 @@ Automaticky validuje UTF-8, ořezává levo- a pravostranné mezery a odstraňuj Maximální délku lze omezit pomocí `setMaxLength()`. Pozměnit uživatelem vloženou hodnotu umožňuje [addFilter()|validation#Úprava vstupu]. -Pomocí `setHtmlType()` lze změnit [charakter|https://developer.mozilla.org/en-US/docs/Learn/Forms/HTML5_input_types] vstupního prvku na `search`, `tel`, `url`, `range`, `month`, `week`, `color`. Pro další typy jako `number`, `email`, `date`, `datetime-local` a `time` existují samostatné metody [#addInteger], [#addFloat], [#addEmail] [#addDate], [#addTime] a [#addDateTime], které disponují validací na straně serveru. +Pomocí `setHtmlType()` lze změnit vizuální charakter textového pole na typy jako `search`, `tel` nebo `url` viz [specifikace|https://developer.mozilla.org/en-US/docs/Learn/Forms/HTML5_input_types]. Pamatujte, že změna typu je pouze vizuální a nezastupuje funkci validace. Pro typ `url` je vhodné přidat specifické validační [pravidlo URL|validation#Textové vstupy]. -```php -$form->addText('color', 'Vyberte barvu:') - ->setHtmlType('color') - ->addRule($form::Pattern, 'invalid value', '[0-9a-f]{6}'); -``` +Pro další typy vstupů, jako `number`, `range`, `email`, `date`, `datetime-local`, `time` a `color`, použijte specializované metody jako [#addInteger], [#addFloat], [#addEmail] [#addDate], [#addTime], [#addDateTime] a [#addColor], které zajišťují serverovou validaci. Typy `month` a `week` zatím nejsou plně podporovány ve všech prohlížečích. Prvku lze nastavit tzv. empty-value, což je něco jako výchozí hodnota, ale pokud ji uživatel nezmění, vrátí prvek prázdný řetězec či `null`. @@ -62,6 +58,8 @@ $form->addInteger('year', 'Rok:') ->addRule($form::Range, 'Rok musí být v rozsahu od %d do %d.', [1900, 2023]); ``` +Prvek se vykresluje jako ``. Použitím metody `setHtmlType()` lze změnit typ na `range` pro zobrazení v podobě posuvníku, nebo na `text`, pokud preferujete standardní textové pole bez speciálního chování typu `numeric`. + addFloat(string|int $name, $label=null): TextInput .[method]{data-version:3.1.12} ================================================================================= @@ -74,7 +72,9 @@ $form->addFloat('level', 'Úroveň:') ->addRule($form::Range, 'Úroveň musí být v rozsahu od %d do %d.', [0, 100]); ``` -Nette a prohlížeč Chrome akceptují jako oddělovač desetinných míst čárku i tečku. Aby Firefox také akceptoval čárku, je potřeba nastavit odpovídající jazyk v HTML atributu `lang`, a to buď přímo tomuto prvku, nebo kterémukoliv nadřazenému elementu, například ``. +Prvek se vykresluje jako ``. Použitím metody `setHtmlType()` lze změnit typ na `range` pro zobrazení v podobě posuvníku, nebo na `text`, pokud preferujete standardní textové pole bez speciálního chování typu `numeric`. + +Nette a prohlížeč Chrome akceptují jako oddělovač desetinných míst jak čárku, tak tečku. Aby byla tato funkcionalita dostupná i ve Firefoxu, je doporučeno nastavit atribut `lang` buď pro daný prvek nebo pro celou stránku, například ``. addEmail(string|int $name, $label=null): TextInput .[method] @@ -138,6 +138,12 @@ Prvek automaticky kontroluje, že nedošlo k podvržení a že vybrané položky Při nastavení výchozích vybraných položek také kontroluje, že jde o jedny z nabízených, jinak vyhodí výjimku. Tuto kontrolu lze vypnout pomocí `checkDefaultValue(false)`. +Pokud odesíláte formulář metodou `GET`, můžete zvolit kompaktnější způsob přenosu dat, která šetří velikost query stringu. Aktivuje se nastavením atributu na formuláři: + +```php +$form->setHtmlAttribute('data-nette-compact'); +``` + addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] =================================================================================== diff --git a/forms/cs/rendering.texy b/forms/cs/rendering.texy index 7251511ac6..7280bc7514 100644 --- a/forms/cs/rendering.texy +++ b/forms/cs/rendering.texy @@ -442,21 +442,20 @@ Podpora pro Bootstrap HTML atributy ============= -Formulářovým prvkům můžeme nastavovat libovolné HTML atributy pomocí `setHtmlAttribute(string $name, $value = true)`: +Pro nastavení libovolných HTML atributů formulářových prvků použijeme metodu `setHtmlAttribute(string $name, $value = true)`: ```php $form->addInteger('number', 'Číslo:') ->setHtmlAttribute('class', 'big-number'); $form->addSelect('rank', 'Řazení dle:', ['ceny', 'názvu']) - ->setHtmlAttribute('onchange', 'submit()'); // při změně odeslat + ->setHtmlAttribute('onchange', 'submit()'); - -// chceme-li to samé udělat pro
+// Pro nastavení atributů samotného $form->setHtmlAttribute('id', 'myForm'); ``` -Nastavení typu: +Specifikace typu prvku: ```php $form->addText('tel', 'Váš telefon:') @@ -464,6 +463,9 @@ $form->addText('tel', 'Váš telefon:') ->setHtmlAttribute('placeholder', 'napište telefon'); ``` +.[warning] +Nastavení typu a dalších atributů slouží jen pro vizuální účely. Ověření správnosti vstupů musí probíhat na serveru, kterou zajístíte volbou správného [formulářového prvku|controls] a uvedením [validačních pravidel|validation]. + Jednotlivým položkám v radio nebo checkbox listech můžeme nastavit HTML atribut s rozdílnými hodnotami pro každou z nich. Povšimněte si dvojtečky za `style:`, která zajistí volbu hodnoty podle klíče: @@ -474,7 +476,7 @@ $form->addCheckboxList('colors', 'Barvy:', $colors) ->setHtmlAttribute('style:', $styles); ``` -Vypíše: +Výsledný kód: ```latte @@ -482,10 +484,9 @@ Vypíše: ``` -Pokud jde o logický HTML atribut (který nemá hodnotu, např. `readonly`), můžeme použít zápis s otazníkem: +Pro nastavení logických atributů, jako je `readonly`, můžeme použít zápis s otazníkem: ```php -$colors = ['r' => 'červená', 'g' => 'zelená', 'b' => 'modrá']; $form->addCheckboxList('colors', 'Barvy:', $colors) ->setHtmlAttribute('readonly?', 'r'); // pro více klíču použijte pole, např. ['r', 'g'] ``` @@ -539,9 +540,6 @@ U prvků Checkbox, CheckboxList a RadioList můžete ovlivnit předlohu elementu ```php $input = $form->addCheckbox('send'); -echo $input->getControl(); -// - $html = $input->getContainerPrototype(); $html->setName('div'); //
$html->class('check'); //