Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
warning
  • Loading branch information
dg committed May 5, 2024
1 parent 589cf32 commit ef111a7
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 18 deletions.
20 changes: 13 additions & 7 deletions forms/cs/controls.texy
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

Expand Down Expand Up @@ -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 `<input type="numeric">`. 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}
=================================================================================
Expand All @@ -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 `<html lang="cs">`.
Prvek se vykresluje jako `<input type="numeric">`. 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 `<html lang="cs">`.


addEmail(string|int $name, $label=null): TextInput .[method]
Expand Down Expand Up @@ -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]
===================================================================================
Expand Down
20 changes: 9 additions & 11 deletions forms/cs/rendering.texy
Original file line number Diff line number Diff line change
Expand Up @@ -442,28 +442,30 @@ 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 <form>
// Pro nastavení atributů samotného <form>
$form->setHtmlAttribute('id', 'myForm');
```

Nastavení typu:
Specifikace typu prvku:

```php
$form->addText('tel', 'Váš telefon:')
->setHtmlType('tel')
->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:

Expand All @@ -474,18 +476,17 @@ $form->addCheckboxList('colors', 'Barvy:', $colors)
->setHtmlAttribute('style:', $styles);
```

Vypíše:
Výsledný kód:

```latte
<label><input type="checkbox" name="colors[]" style="background:red" value="r">červená</label>
<label><input type="checkbox" name="colors[]" style="background:green" value="g">zelená</label>
<label><input type="checkbox" name="colors[]" value="b">modrá</label>
```

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']
```
Expand Down Expand Up @@ -539,9 +540,6 @@ U prvků Checkbox, CheckboxList a RadioList můžete ovlivnit předlohu elementu

```php
$input = $form->addCheckbox('send');
echo $input->getControl();
// <label><input type="checkbox" name="send"></label>

$html = $input->getContainerPrototype();
$html->setName('div'); // <div>
$html->class('check'); // <div class="check">
Expand Down

0 comments on commit ef111a7

Please sign in to comment.