Formuláře

Formuláře - to je vlastně středobod naší práce a někdy to mohla být tak trochu i nudná rutina. Formuláře pochopitelně nejsou pouze o jejich zobrazení. Důležité je i jejich zachytávání - tedy zachytávání vstupních dat a jejich validace a následné předání dat dál. A to se netýká pouze těch formulářů, které uživatel vidí na stránce. Zachytávat a validovat data můžeme (a vlastně musíme) při zpracování požadavků na API (např. REST), nebo v AJAX aplikacích a tak dále. Tedy zachycení a validace je obecný problém, který se týká formulářů i když se možná při vyslovení slova formulář jako první asociuje formulář viditelný na stránce.

Tedy Jet Form musí řešit tyto témata:

  • Definování formulářů
  • Zachycení, validace a práce s daty
  • Zobrazování formulářů

Než si vše v následujících kapitolách rozebereme do detailu, tak si rovnou ukažme příklad formuláře. Jedná se o jednoduchý příklad řekněme registračního formuláře pro zadání jména a data narození s tím, že údaje jsou povinné a datum je nutné zadat pomocí vstupního pole s kalendářem a validovat zda je na vstupu opravdu datum:

Kontroler
use Jet\Form;
use 
Jet\Form_Field_Date;
use 
Jet\Form_Field_Input;

$name_field = new Form_Field_Input(
    
name'name',
    
label'Name:',
    
is_requiredtrue
);
$name_field->setErrorMessages([
    
Form_Field_Input::ERROR_CODE_EMPTY => 'Please enter your name'
]);

$birthdate_field = new Form_Field_Date(
    
name'birthdate',
    
label'Birthdate:',
    
is_requiredtrue
);
$birthdate_field->setErrorMessages([
    
Form_Field_Date::ERROR_CODE_EMPTY => 'Please enter your birthday',
    
Form_Field_Date::ERROR_CODE_INVALID_FORMAT => 'Please valid date'
]);

$form = new Form(name:'registration_form'fields:[
    
$name_field,
    
$birthdate_field
]);

if(
$form->catch()) {
    
//Form has been sent and is valid
    
$name $form->field('name')->getValue();
    
$birthdate $form->field('birthdate')->getValue();
    
//...
}

$view->setVar('registration_form'$form);

Pohled - view
use Jet\MVC_View;
use 
Jet\Form;
use 
Jet\UI;

/**
 * @var MVC_View $this
 * @var Form $form
 */

$form $this->getRaw('registration_form');
?>

<?=$form->start()?>
    <?=$form->message()?>

    <?=$form->field('name')?>
    <?=$form->field('birthdate')?>

    <?=UI::button_save()?>

<?=$form->end()?>

Tyto krátké kousky ukázkového kódu řeší vše. Tedy definici formuláře, jeho zachycení a validaci a také zobrazení. Krom toho je vše automaticky napojeno na překladač. Vše je pochopitelně plně přizpůsobitelné - tato ukázka je opravdu pouze minimální základ. Vše si ukážeme v následujících kapitolách. Doporučuji pokračovat na definice formulářů.

Předchozí kapitola
Jet\DataModel_Helper
Další kapitola
Definice formulářů