Rozbalovací pole formuláře v CodeIgniter
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.