Články

Odkazy

Spřátelené weby

JoomlaDev.eu - Vše o vývoji CMS Joomla

Redakční systém WordPress - Nejlepší redakční systém zdarma - WordPress

Anketa

O jakém RS by jste chtěli více článků
 
Navigace: Úvodní strana Drupal Články Průvodce formulářovým API - validace a odesílání formulářů

Průvodce formulářovým API - validace a odesílání formulářů

PDF Tisk Email
Pondělí, 06 Duben 2009 18:29
drupalDnes navážeme na článek o tvorbě a šablonování formulářů v Drupalu a povíme si o validaci (kontrole vyplnění jednotlivých formulářových polí) a odesílání formuláře.

Validace formulářů

Validace formulářů není nic jiného než kontrola vstupních dat v jednotlivých polích. Například pokud vytvoříme formulářové pole poštovní směrovací číslo, budeme chtít aby uživatel zadal vždy pouze číslo, pomocí API můžeme snadno vytvořit funkci,která nám toto bude kontrolovat. Jméno funkce, která kontroluje formulář se skládá z ID formuláře a sufixu _validate. Pokud se tedy funkce vytvářecí formulář nazývá test_form, funkce která ho bude kontrolovat se bude jmenovat test_form_validate. Funkce má dva argumenty: $form a $form_state. $form je pole odeslaného formuláře a $form_state['values'] obsahuje hodnoty, které budeme kontrolovat. 

Ukázkový kód bude tedy vypadat: 

  1. <?php
  2. function test_form_validate($form, &$form_state) {
  3.   if ($form_state['values']['name'] == '') {
  4.     form_set_error('', t('Musíte zadat jméno.'));
  5.   }
  6. }
  7. ?>
 
 
Jak vidíme je to velice jednoduché, vezmeme pole name, cili jméno zkontrolujeme jestli je vyplněno, a když ne, vyhodíme hlášku ošpatné vyplnění.Takto můžeme kontrolovat například i čísla, jednotlivé znaky atd. pomocí regularních výrazů. Vše ostatní za nás obstará API.
 

Odesílání formulářů

Odesílání je velice podobné validaci, opět stačí vytvořit funkci složenou z názvu funkce vytvářující  formulář a přípony _submit, funkce má ty samé argumenty jako při validaci. Raději si opět ukážeme kód:

 

  1. <?php function test_form_submit($form, &$form_state) {
  2.   db_query("INSERT INTO {table} (name, log, hidden) VALUES ('%s', %d, '%s')", $form_state['values']['name'], $form_state['values']['access']['log'],  $form_state['values']['hidden']);
  3.   drupal_set_message(t('Your form has been saved.'));
  4. }
  5. ?>
 
 
Tento kód vloží do databáze záznamy z formulářového pole a zobrazí hlášku o úspěšném uložení.
 
Poznámky:
  1. Funkce pro odeslání je zavolána pouze pokud formulář prošel validací, a zároveň je vytvořeno odesílací tlačítko a existuje proměnná $_POST
  2. $form_state['values'] pole nebude mít většinou stejnou hierarchii jako vytvořené $form pole
  3. Pokud má formulář potvrzovací funkci, poté nejsou potřebné skryté formulářové hodnoty. Místo toho, všechny hodnoty které potřebujete dostat do $form_state['values'] mohou být deklarovány v poli $form například takto:
    1. <?php
    2. $form['foo'] = array('#type' => 'value', '#value' => 'bar')
    3. ?>
     
     
    Poté k této proměnné můžeme přistupovat přes $form_state['values']['foo'], která bude mít v tomto případě hodnotu bar. Tato metoda je preferována, jelikož neposílá hodnoty do prohlížeče.


    K učení přesměrování po odeslání se používá proměnná $form_state['redirect'], která používá pro přesměrování funkci drupal_goto. Pokud proměnnou nenastavíme formulář se přesměruje sám po odeslání formuláře. Je slušnost použít funkci drupal_set_message() k oznámení, že formulář byl úspěšně odeslán.


    Článek byl přeložen z oficiálních stránek drupal.org. Ukázky funkce test_form můžete najít ve článku o tvorbě a šablonování formulářů
 

Přidej Váš komentář

BoldItalicUnderlineStrikethroughSubscriptSuperscriptEmailImageHyperlinkOrdered listUnordered listQuoteCodeHyperlink to the Article by its id
Vaše jméno:
Předmět:
Komentář:

Ochrana osobních údajů, Mapa stránek,design a kód Klasdesign, Redakční systémy, rs@redakcni-systemy.com 2009
Wifi router a antény , Moje IP, Studuj FEL, Barevné kontaktní čočky