English
version 3.0.0

  PClib - PHP component library



16. 12. 2008

Rychlokurz - Úvod

Jádrem pclib je šablonovací systém. Šablona, jak dnes už ví každé malé dítě, je (obvykle) html stránka, do které lze z php kódu vkládat libovolné údaje.
Využíváním šablonovacího systému se zachová flexibilita vzhledu, čistota php kódu a standartizuje se rozhraní mezi aplikacní logikou a vizuálním výstupem.

Když se rozhlédneme po internetu, zjistíme patrně, že každá druhá stránka obsahuje tabulku se seznamem nejakých údajů, které se obvykle získávají z databázové tabulky. PCLib k vytváření takovýchto výpisů nabízí třídu grid. Tato třída používá k zobrazení databázových údajů šablonu, takže výsledný vzhled je plně ve vaší režii.
Navíc můžete využít mnoha dalších funkcí: Rozdělit delší výpis na jednotlivé stránky mezi kterými lze listovat, kliknutím na hlavičku sloupce výpis seřadit, nebo prostým nastavením parametru filtrovat výpis podle požadovaných podmínek. Tento filtr lze navíc velmi snadno propojit s třídou formulář, takže je možné téměř bez práce udělat např. katalog internetového obchodu s vyhledáváním.

Jestliže každá druhá stránka obsahuje seznam z databáze, pak ta první má v sobe formulář. K jeho vytvoření se používá třída form. Jeho vzhled je opět dán html šablonou. K jeho funkcím patří: Jednoduché odeslání vyplněného formuláře emailem, nebo uložení do databáze jediným příkazem, validace vyplněných údajů (jako např. povinná pole), načítání položek SELECTu, checkboxů a podobně z databázových číselníků, řešení obtíží při uploadování souborů a další.

Konečně od nového roku poskytuje pclib také multijazyčnou podporu.

-----

Šablona může vypadat kupříkladu takto:

Zaměstnanec <b>{JMENO} {PRIJMENI}</b> se narodil dne {DATNAR}.

Uložíme si tuto větu do souboru zamest.tpl a šablona je připravena k použití.
Následujícím kódem šablonu načteme ze souboru, nahradíme výrazy ve složených závorkách konkrétními údaji a vypíšeme.

<br>
$tzamest = new tpl ('zamest.tpl');<br>
<
br>
$tzamest->values['JMENO']    = 'Petr';<br>
$tzamest->values['PRIJMENI'] = 'Votruba';<br>
$tzamest->values['DATNAR']   = '10. 4. 1976';<br>
<
br>
$tzamest->out();<br>
 


Výsledkem je výstup:

Zaměstnanec Petr Votruba se narodil dne 10. 4. 1976.

Třída tpl integruje všechny operace se šablonami. Metoda out() šablonu vypíše v internetovém prohlížeči, pričemž nahradí parametry {IDENTIFIKATOR} hodnotami z pole values. Pole values je úplne obyčejné phpčkovské pole, což má některé užitečné důsledky.
Například: Pokud máme zaměstnance uložené v databázové tabulce, můžeme dát:

<br>
$q mysql_query("SELECT * FROM ZAMESTNANCI WHERE ID='1'");<br>
$zamestnanec mysql_fetch_assoc($q);<br>
<
br>
$tzamest = new tpl ('zamest.tpl');<br>
$tzamest->values $zamestnanec;<br>
$tzamest->out();<br>
 


Za předpokladu, že v tabulce ZAMESTNANCI máme sloupce JMENO, PRIJMENI a DATNAR, vloží se tyto hodnoty do šablony. Při tom možná narazíme na jeden problém.
Pokud je sloupec DATNAR typu date, zobrazí se nám ve formátu databázového datumu, tedy 1976-04-10. Namísto abychom ho pracně formátovali pomocí php, přenecháme tuto starost šabloně. Stačí přidat na začátek šablony tento kód:

<br>
DATNAR date 
"%d. %m. %Y"<br>
<br>
 


Jedná se o speciální blok, ve kterém můžeme provádět s vkládanými hodnotami před jejich vypsáním různé operace, například formátování. Uvedený řádek říká, že DATNAR je typu string, jde o datum a má být zobrazeno v následujícím formátu.
Typ string umožòuje ještě celou řadu formátování, kupříkladu náhradu konců rádků za <BR> pomocí atributu format "n", nebo oříznutí textu na zadaný počet znaků, takto:

string POZNAMKA size "40" tooltip

Tím bude POZNAMKA oříznutá na 40 znaků. Pokud přidáme ještě atribut tooltip, zobrazí se po najetí myší nad text celá (neoříznutá) poznámka v tooltip okně.

Kromě toho umožnuje šablona práci s takzvanými bloky. Je to velmi jednoduché, jak ukazuje následující příklad.

<br>
DATNAR date 
"%d. %m. %Y"<br>
block narozeniny noprint<br>
<br>
Zamestnanec <b>{JMENO} {PRIJMENI}</b> se narodil dne {DATNAR}.<br>
<!-- BLOCK narozeniny --><br>
Gratulujeme k narozeninám!<br>
<!-- BLOCK end --><br>
 


Poslední tři řádky definují blok. Ten se díky atributu "noprint" implicitně nezobrazí, ale můžeme ho aktivovat z php kódu.
Upravíme proto náš příklad takto:

<br>
$q mysql_query("SELECT * FROM ZAMESTNANCI WHERE ID='1'");<br>
$zamestnanec mysql_fetch_assoc($q);<br>
<
br>
$tzamest = new tpl ('zamest.tpl');<br>
$tzamest->values $zamestnanec;<br>
<
br>
//jestli se den a mesic shoduje, aktivuj blok narozeniny<br>
if (substr($zamestnanec['DATNAR'], -5) = date("m-d")) {<br>
  
$tzamest->enable('narozeniny');<br>
}<
br>
<
br>
$tzamest->out();<br>
 


Tím jsme zajistili, že se gratulace zobrazí pouze v den narozenin.

Možná budeme někdy potřebovat vložit jednu šablonu do druhé.
Nejschůdnější cesta je použít funkci html() třídy tpl. Tato funkce, na rozdíl od funkce out(), nevypíše šablonu na obrazovku, ale vrátí výsledné html do proměnné, kterou pak lze vložit do další šablony. Tedy:

<br>
$tzamest = new tpl ('zamest.tpl');<br>
$tzamest->values $zamestnanec;<br>
<
br>
$tstr = new tpl ('zamestmesice.tpl');<br>
$tstr->values['OBSAH'] = $tzamest->html();<br>
$tstr->out();<br>
 

« zpět