Lubomír Hauerland


CodeIgniter – kde začít?

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

Pokud se chcete naučit programovat v PHP frameworku CodeIgniter, povedou vaše první kroky do uživatelského manuálu. Stručně a přehledně zde najdete všechny podstatné informace a přehled controllerů a helperů. Pokud jste se již někdy s nějakým MCV frameworkem setkali, bude pro vás pochopení základů otázkou jedné hodiny.

Jak se však dozvědět víc o konvencích a různých vychytávkách, pro které mají u CakePHP tzv. The Bakery? U CI by tuto funkci měla zastávat Wiki, ale články jsou zde poměrně chaoticky řazené a dobrat se řešení je složité. Spousta materiálů je přepisována na základě příspěvků ve fóru, kam by měly tedy zamířit vaše první kroky.

Jakousi sbírkovou aplikací napsaných v CodeIgniter se má stát web CIForge, bohužel projektů je opravdu poskrovnu.

Na začátek doporučuji prostudovat zdrojové kódy následujících aplikací:

I ♥ Rant

Webová služba pro chronické stěžovatele :-). Zdrojový kód obsahuje např. ajaxové hodnocení, přidávání příspěvků do databáze.

Zdrojový kód: http://www.iheartrant.com/app.tar.gz

FreakAuth

Pokud plánujete mít na stránkách skripty pro přihlašování/odhlašování/registraci uživatelů, patří FreakAuth Light k nejpopulárnějším řešením. Bohužel se z něj stává trochu bumbrlíček a autoři vám vnucují i nepodstatné věci jako struktura stránky. Mimo zdrojového kódu najdete na stránkách i tutoriály. 

WWW: http://www.4webby.com/freakauth

Bambooinvoice

Firemní aplikace pro správu zákazníků od Dereka Allarda - jednoho z významných programátorů CI.

WWW: http://www.bambooinvoice.org/

Screencast od Dereka Allarda

Na závěr doporučuji zhlédnout video od Dereka Allarda, ve kterém programuje auto-suggest ve stylu vyhledávání u Google.

Video: http://video.derekallard.com/

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.