Formuláře

Základní principy použití formulářů:

  1. Definice vstupních prvků
  2. Definice validačních pravidel
  3. Zpracování formuláře
  4. 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í');