Lubomír Hauerland


Rozbalovací pole formuláře v CodeIgniter

Zasláno do CodeIgniter od hauerland v 9. 12. 2007

Ke zjednodušení práce s formuláři má framework CodeIgniter vlastní Form Helper. Práce s ním má sice některá omezení a výhod není mnoho (snad jen relativní odkazování atributu ACTION), vytvořený kód je však elegantní. Zde je jednoduchý příklad, jak v kombinaci s ActiveRecords vytvoříte rozbalovací políčko naplněné informacemi z databáze.

Dejme tomu, že máme přehled písniček a u každé chceme z rozbalovacího políčka vybrat příslušnou hudební skupinu. Hudební skupiny jsou umístěny v tabulce skupiny s dvě sloupci: id_skupiny je unikátní číslo (které v tomto případě použijeme jako atribut value) a nazev_skupiny (to jest samotný option).

Výběr z databáze:

$dotaz = $this->db->get('skupiny');

Pro každý vybraný řádek vytvoříme PHP pole s klíčem id_skupiny a hodnotou nazev_skupiny:

foreach ($dotaz->result() as $radek)
{
$kategorie[$radek->id_skupiny] = $radek->nazev_skupiny;}

Tento řádek již vytvoří z našeho pole rozbalovací seznam s atributem name=”seznamskupin”:

echo form_dropdown('seznamskupin', $kategorie);

Pokud byste chtěli mít v seznamu určitou položku vybranou pomocí  select=”selected”, je třeba ji uvést jako třetí parametr u form_dropdown(). Chceme-li mít v seznamu určitou neutrální výzvu, je třeba ji do pole kategorie vložit před spuštěním foreach().

Např:

$kategorie['index'] = 'Vyberte položku';

Políčko bychom pak vytvořili za pomoci:

echo form_dropdown('seznamskupin', $kategorie, 'index');

Bohužel složitější formátování např. s využitím optgroup je již hodně složité a musíme si vytvořit vlastní helper nebo editovat přímo kód Form Helperu jako v tomto příspěvku, kdy se jednotlivé skupiny vytvoří za pomoci vícerozměrného pole.

Zanechat odpověď