- Aplikace
- Databáze
- Šablony
- Formuláře
- Knihovny
- Návody
Formuláře
Základní principy použití formulářů:
- Definice vstupních prvků
- Definice validačních pravidel
- Zpracování formuláře
- Vygenerování formuláře
Ze všeho nejdříve musíte vytvořit instanci třídy Form.
Pak byste měli přidat všechny vstupní prvky, které bude formulář
obshaovat. K tomu používáme metody začínající na add.
První parametr je vždy jméno vstupního prvku, pak následuje volitelný
druhý parametr – popisek / label. Zbylé parametry závisí na typu
vstupního prvku.
$form = new Form('save.php');
$form->addText('name', 'First name')
->addText('surname', 'Last name')
->addTextarea('aboutme', 'About me')
->addFile('avatar', 'My avatar')
->addCheckbox('terms', 'I agree with the terms.')
->addSubmit();
| Control | Parameters | Návratový typ |
|---|---|---|
| Vstupní prvky | ||
| Hidden | $name | string |
| Text | $name, $label | string |
| Password | $name, $label | string |
| Textarea | $name, $label | string |
| Checkbox | $name, $label | bool |
| File | $name, $label | FormUploadedFile |
| Select | $name, $options, $label | string |
| Radio | $name, $options, $label | string |
| Tlačítka | ||
| Submit | $name, $label | |
| Reset | ||
| Multi vstupní prvky | ||
| MultiCheckbox | $name, $options, $label | array |
| MultiSelect | $name, $options, $label | array |
Porom co nadefinujete prvky, můžete k nim jednoduše přistupovat pomocí array-accessu:
$form = new Form();
$form->addText('username', 'Uživatelské jméno');
$form['username']->addRule(...);
Defaultní hodnoty
Každému prvku můžete nastavit výchozí (předvyplněnné) hodnoty.
K tomu slouží metoda setDefaults, které předáte pole, kde
klíče jsou názvy vstupních prvků.
$form->setDefaults(array(
'username' => 'johnator',
'first' => 'John',
));
Pokud pomocí druhého parametru nepředáte false, tak se bude
provádět kontrolo, zda byl formulář a hodnoty se nastaví pouze tehdy,
když nebyl.
Prázdné hodnoty
Často potřebujete uživateli napovědět nějakou hodnotu, kterou má vyplnit, ale nechcete, aby tato hodnota byla sama o sobě považována za validní. Např. v poli URL chcete předvyplnit „http://“, aby uživatel tento text psát ručně.
$form['url']->setEmptyValue('http://');
Ochrana před CSRF útokem
Formulář můžete také automaticky ochránit před CSRF útokem
přidáním speciálního hashe. Správu tohoto skrytého pole má plně na
starosti framework. Danou ochranu zapnete pomocí metody
addProtection.
$errorMessage = 'Chybová zpráva při neplatném hash - možný CSRF útok.';
$form->addProtection($errorMessage);
HTML elementy v radio prvku
Pokud chcete HTML elemetny jako hodnoty radio provků, pak je musíte vložit přes Html objekt:
$form->addRadio('sex', array(
'male' => Html::el('img')->src('male.png'),
'female' => Html::el('img')->src('female.png'),
), 'Pohlaví');
