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_required: true
);
$name_field->setErrorMessages([
Form_Field_Input::ERROR_CODE_EMPTY => 'Please enter your name'
]);
$birthdate_field = new Form_Field_Date(
name: 'birthdate',
label: 'Birthdate:',
is_required: true
);
$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ářů.