Průvodce formulářovým API - tvorba a šablonování formulářů
Neděle, 05 Duben 2009 13:47
API pro formuláře v drupalu je velmi mocný nástroj dovolující návrh, validaci, potvrzování formulářů. Snadno můžete elementy odebírat, přidávat, nebo upravovat. V následujících řádkách si něco o API povíme.Ještě než se do tvorby pustíme nutno dodat, že následující návod platí pouze pro Drupal verze 6.x
Vytváření formulářů
Veškeré formuláře vytváříme ve formátu polí. Vždy přiřazujeme určitému klíči jednotlivé hodnoty. Raději si to ukažme na příkladu, tento kus kódu zobrazí texotvý formulář:
a k němu připojíme potvrzovací tlačítko
Nyní tedy pár poznámek ke kódu:
Jméno elementu se deklaruje v poli $form, pole může být vícerozměrné, například takto:
- Typ elementu se nachází pod klíčem #type
- Vlastnosti a atributy vždy začínají znakem # a vždy jsou to řetězce (string)
- Pořadí jednotlivých atributů a vlastností může být náhodné, a nemusí být vždy uvedeny všechny vlastnosti.
- Nepoužívejte vždy #value hodnotu, místo toho lze použít #default_value
Tento kus kódu ukazuje, jak mohou být formuláře vytvářeny v hierarchické struktuře rozšiřováním pole. Vidíme dvě funkce. První která vytváří formulář a druhá, která zobrazuje daný formulář pomocí funkce drupal_get_form(). Všimněme si, že první vrstva je ze dvou skupin 'acces' a 'details'. V každé skupine se nacházejí jednotlivé elementy. Pořadí konstrukce je zde důležité. Pořadí elementů v poli odpovídá následnému pořadí zobrazených prvků na stránkách.
U skupin "acces" a "details" je parametr #type nastaven na fieldset
Funkce drupal_get_form() je klíčová ve formulářovém API. Její použití je jednoduché. Má pouze jeden atribut. Je to řetězec, který je shodný s názvem funkce která tvoří jednotlivé prvky formuláře, v našem případě je název atributu test_form.
drupal_get_form() obsluhuje následující věci:
- Začíná celý proces vytváření formuláře
- Překládá $form['name'] položku do aktuálního formulářového elementu
- Odesílá formulář, pokud je je funkce pro odesílání formuláře deklarována
- Volá funkce pro šablonování formulářů, pokud byly vytvořeny
- Vrací HTML řetězec pro zobrazení formulářů
Šablonování formulářů
Vytvářet vzhled formulářů je možné pomocí dvou základních metod:
- První možností je vkládání přímo jednotlivých elementů jako atributy pole
- při vytváření takovýchto formulářů používáme #prefix a #sufix, jak už z názvu vyplývá, jedná se o element před a za formulářem, podívejme se na příklad:
- Dále je zde typ #markup, který může být umístěn kamkoliv do formuláře, jeho hodnota pak bude rendrována ve specifikované pozici
- Tento markup element je přístupný přes jeho jméno v poli (div_tag)
- Rozdělení jednotlivých značek do separátních funkcí.To je uděláno vytvořením šablonové funkce přiřazené k ID formuláře. V případě, že chcete jeden styl přiřazovat více formulářům, můžeme použít volitelný argument funkce drupal_get_form(), v tomto případě bude třetí argument funkce řetězec obsahující jméno funkce, která volá kód pro tvorbu formuláře. Zní to možná trochu nepřehledně, proto si raději ukažme příklad, který bude šablonou pro náší funkci test_form uvedenou o něco výše.
Pár poznámek ke kódu:
To je k vytváření a šablonování formulářů vše. Příští článek bude o validování a odesílání formulářů
- funkce začíná prefixem theme_
- Má jeden argument, který je názvem pole, ve kterém je formulář
- Vytváříme a vracíme jeden dlouhý řetězec ($output)
- Forumláře jsou rendrovány pomocí funkce drupal_render
- Pokud pomocí funkce drupal_render vykreslujeme pole nastavené jako fieldset, budou vykresleny všechny elementy v pořadí, jaké je uvedeno ve funkci test_form
- Pořadí můžeme měnit voláním funkce drupal_render s argumentem $form['name'] v místě kde chceme prvek s názvem 'name' umístit
- Formulář může výt vykreslen pouze jednou.
