Smarty sablonkezelő rendszer – I.

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

4 HOZZÁSZÓLÁS

  1. 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.

  2. 1
    
    $smarty->assign('Lada',array("szinei"=>("kek,sarga")));

    helyett

    1
    
    $smarty->assign('Lada', array("szinei" => "kek,sarga"));
    1
    
    $smarty->assign('Trabant',array("szinei"=>("piros,zold")));

    helyett

    1
    
    $smarty->assign('Trabant', array("szinei" => "piros,zold"));
    1
    
    email:{$person->neve}

    helyett

    1
    
    email: {$person->email}
  3. 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…

  4. 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.

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét