Nové prvky pro vaše formuláře: datum, čas, barvy a čísla

před rokem od David Grudl  

Formuláře v Nette přináší do svého arzenálu nové interaktivní prvky, které usnadňují práci s datem, časem, barvami a desetinnými čísly.

Datum a čas

Zbavme se závislosti na JavaScriptových date/time pickerech. Současné prohlížeče již nabízejí tuto funkcionalitu nativně a bez chyb. Nette proto přichází s jejich podporou včetně plnohodnotné validace na straně klienta i serveru. S novými metodami addDate(), addTime() a addDateTime() můžete nyní jednoduše přidat elementy pro zadávání časových údajů do vašich formulářů:

$form->addDate('birthday', 'Datum narození:');
$form->addTime('alarm', 'Čas buzení:');
$form->addDateTime('meeting', 'Datum a čas schůzky:');

Každý z těchto prvků vrací po odeslání objekt DateTimeImmutable. Umožňuje také snadné nastavení minimálního a maximálního data/času a možnost zadávat i sekundy:

$form->addTime('detailedTime', 'Přesný čas:', withSeconds: true)
	->addRule($form::Min, 'Nejvýše hodinu zpátky', new DateTime('-1 hours'));

Svět plný barev

Stojíte před úkolem nechat uživatele vybrat barvu? Díky nové metodě addColor() výběr barvy bude hračka:

$form->addColor('favoriteColor', 'Oblíbená barva:');

Hodnotu vrací v hexadecimálním formátu #rrggbb. Mimochodem, s tímto formátem umí nově pracovat i třída Image:

$image = Image::fromBlank(100, 200, ImageColor::hex('#3C8ED7'));

Přesnost desetinných míst

Pro aplikace, kde každé desetinné místo má svůj význam, je tu addFloat(). Tento prvek umožňuje uživatelům zadávat desetinná čísla, opět s validací na straně klienta i serveru:

$form->addFloat('price', 'Cena:')
     ->setRequired();

Dokumentace vám poradí, jak nastavit prvek tak, aby akceptoval jako oddělovač desetinných míst jak tečku, tak i čárku.

Tyto novinky v Nette Forms jsou tu proto, aby práce s formuláři byla pro vás zase o něco příjemnější. Happy coding!

Komentáře

  1. Super, konečně se zbavím tohoto:
    $form->addText(‚date‘, ‚Datum a čas‘)->setHtmlAttribute(‚type‘, ‚datetime-local‘);
    a při editaci
    $defaults[‚date‘] = $defaults[‚date‘]->format(‚Y-m-d‘);

    před rokem
  2. Vyzkoušel jsem a splňuje všechny očekávání. Profesionálně provedeno.

    před rokem
  3. Super, tohle mi chybělo!!!! Děkuji za skvělou práci.

    před rokem
  4. Parada! Zrovna jsem chtel tuhle vec (datum) hledat do dokumentace a vidim, ze sviti novinka v blogu… ok, nejprve kouknu do blogu a… Zrovna se tam resi presne to, co jsem chtel jit hledat 🙂

    před rokem
  5. Tohle vypadá super!

    před rokem

Chcete-li odeslat komentář, přihlaste se