Az elkövetkezendő cikksorozat a Smarty sablonkezelő rendszer világába nyújt betekintést. Az ismertetés előtt kezdjük a leírást egy kis ismétléssel. Olyan fogalmakat tekintünk át, melyekbe a későbbi leírás során úgyis bele fogunk szaladni.
A cikkek végén megtaláljátok a témához kapcsolódó fórum hivatkozását, kérdezzetek bátran!
változó: Olyan nyelvi objektum (tehát esetünkben Smarty, illetve php elem) amelynek neve ($izé), ), típusa (logikai, egész, lebegőpontos,sztring,tömb stb. (ref) ), és értkéke van($izé=’bigyó’) amely érték a program futása során folyamatosan változhat ( sablonokban ez a változás oldallehívásonként történik, tehát egy oldallehíváson belül a változók mindig állandó értéket képviselnek pl. a {$name}-el jelölt sablonváltozó a egy oldallehíváson belül mindig ugyanzon nevet fog jelképezni akárhányszor jelenik meg az oldalon belül). Nevük, azonosítójuk mindig egy karakter, ill. karaktersorozat ($ize1, $izé2). A változók lehetnek indexeltek ($a[1], $a[2]) ekkor egy tömb elemét jelölik, lehetnek egy vagy többdimenziósak ($a[1],$a[1][1] stb.) . De mik is azok a tömbök? (jó ez a jegyzetlap ceruza a szöveg és felette filctollal amőbák sora :) alig látom)
tömbök(array): Elemek, adatok elrendezése egy több dimenzió mentén. Az egyes elemeknek minden dimenzió mentén index jelöli ki a pozicióját. Az egyes elemek valamilyen közös tulajdonságérték alapján kerülnek egymás mellé. Például egy tömb elemi lehetnek az emberek, a házak, a könyvek. (ref)
Tömbök dimenzió szerint: az egydimenziós tömb a vektor: a tárolt elemek(objektumok) közvetlenül egymás után helyezkednek el (pl. Nevek tömb esetén
(Kata,Klára,Tercsi,Berci…stb) ), képzeljül el mint egy irattároló egy rekeszét ahol a dossziék egymás után helyezkednek el.
kétdimezniós tömb: másnéven táblázat, egy elemet két index segítségével tudunk meghatározni (sor,oszlop), képzeljük el az irattároló szekrényünket, a rekeszt visszatesszük a helyére, akkor hogyan tudunk magára a rekeszre hivatkozni ha az irattároló szekrényben a rekeszek sorokban és oszlopokban helyezkednek el (nyilván sor,oszlop szerint)
háromdimenziós tömb: maradva a rekeszpéldánál hogyan hivatkoznánk most a rekesz egy elemére? Hát sor,oszlop,dosszéi ( mittumén 3.sor 4.oszlop. rekeszének 5. dosszéja)
Namost a tömb egy elemére hivatkozhatunk számmal, ez a numerikus tömb vagy sima tömb(array), illetve sztringel ekkor beszélünk asszociatív tömbről (vagy hash tábláról)
Smarty-ban mindez, php motor kiad egy tömböt(a számozás a 0-tól keződik) legyen az pl.
1 2 | $smarty->assign('autok',array('Lada','Trabant',array('kek','sarga'))); $smarty->assign('autok',array('Lada','Trabant',array('kek','sarga'))); |
azaz ebben a 3 elemü tömbben a tömb elemire így lehet hivatkozni:
1 2 3 4 5 | {$autok[0]} {$autok[1]} {$autok[2][0]} (itt a belső tömb elemeire hivatkozunk, ez a kétdimenziós tömb) {$autok[2][1]} |
a kimenet pedig
1 2 3 4 | Lada Trabant kek sarga |
Látható hogy nehézkes a használatuk ezért is jöttek létre az asszociatív tömbök:
1 2 | $smarty->assign('Lada',array("szinei"=>("kek,sarga"))); $smarty->assign('Trabant',array("szinei"=>("piros,zold"))); |
sablonban:
1 2 | {$Lada.szinei} {$Trabant.szinei} |
kimenet:
1 2 | kek,sarga piros,zold |
Namost itt említem meg az objektumokat is mivel jelen fázisban nem sokban különböznek az asszociatív tömböktől(a php részt nem írom le úgyse szeretitek az oop-ét) (ref)
pl.:
1 2 | név:{$person->name} email:{$person->neve} |
vagy
1 2 | {$Lada->szinei} {$Trabant->szinei} |
a kimenetet nyilván kitalálható
——–
Kapcsolódó fórum: http://www.tutorial.hu/forum/index.php?showtopic=677
eddigiek Smarty ref-je.: http://smarty.php.net/manual/en/language.variables.phpSzerző: toxin
na, ez a tutorial semmire nem jó… aki ért a smartyhoz, valószínűleg a leírtaktól értelmesebb, rendezettebb gondolatokkal rendelkezik; aki viszont nem, az ebből (és a cikk folytatásaiból) semmit nem fog érteni.
helyett
helyett
helyett
Ez a kódsorozat kicsit a rejtvényújságokban található feladványra emlékeztet, ahol ki kell találni, hogy hol vannak az apró eltérések a két kép között ;) Mindig utáltam az ilyesmit, valószínű, hogy ezért nem vagyok képes a kódírásba belemélyedni. Ki tudnám tépni az összes hajam szálanként, ha leírnék egy 250 soros kódot ami nem működik, aztán keresgélhetném naphosszat, hogy hol felejtettem ki egy-egy szóközt! Ezt nem nekem találták ki…
Pedig jó dolog a Smarty. Mondjuk én komolyabb MVC-t használok (újabban Zend Framework), de megtanulni, hogy hogy is van ez az egész megjelenítés-kódlogika szétválasztás, a Smarty egy nagyon jó alap. A cikk egy kicsit tényleg kusza lehet egy kezdőnek, de ott a manual, illetve ha leszeded a Smarty-t a forrásfájlok között találsz egy pár soros példakódot, abból simán el lehet indulni.