). Mindegyik címke (szakasz) kell egy pár (/ szakasz). A szükséges paraméterek névÉs hurok. A ciklusnév (szakasz) bármi lehet, betűkből, számokból és aláhúzásjelekből állhat. Ciklusok (szakasz) beágyazhatók, és a beágyazott (szakasz) neveknek egyedinek kell lenniük egymás között. Változó hurok(általában értéktömb) határozza meg a ciklus iterációinak számát. Ha változókat nyomtat egy szakaszon belül, a szakasz nevének meg kell jelennie a változó neve mellett szögletes zárójelben. (másik szakasz) végrehajtva, ha a paraméter hurok nem tartalmaz értékeket.
Attribútum neve | típus | Kötelező | Alapértelmezett | Leírás |
---|---|---|---|---|
név | húr | Igen | n/a | Szakasz neve |
hurok | vegyes | Igen | n/a | A ciklus iterációinak számát meghatározó érték. |
Rajt | egész szám | Nem | 0 | Annak a pozíciónak az indexe, ahonnan a hurok indul. Ha az érték negatív, akkor a kezdőpozíciót a tömb végétől számítjuk. Például, ha a ciklusváltozónak 7 eleme van, és a start attribútum értéke -2, akkor a kezdőindex 5 lesz. Az érvénytelen értékeket (a tömbön kívüli értékeket) a rendszer automatikusan a legközelebbi érvényes értékre csonkolja. |
lépés | egész szám | Nem | 1 | A lépésérték, amely a tömbön keresztül történő iterációhoz használatos. Például a step=2 megadja a tömb bejárását a 0,2,4 elemekkel... Ha a lépés negatív, akkor a tömb az ellenkező irányba halad. |
max | egész szám | Nem | 1 | A ciklusiterációk maximális száma. |
előadás | logikai érték | Nem | igaz | Meghatározza, hogy ez a szakasz megjelenjen-e vagy sem |
A Smarty 1.5.0 óta a munkamenettulajdonság-változó szintaxisa (%szakasznév.varnév%) értékről ($smarty.section.sectionname.varname) módosult. A régi szintaxis továbbra is támogatott, de csak példákat fog látni az új szintaxisra.
Az index a tömb aktuális indexének megjelenítésére szolgál, nullától kezdődően (vagy a start attribútumtól, ha meg van adva), és eggyel növekszik (vagy a step attribútum értékével, ha meg van adva).
Ha a step és start attribútumok nincsenek megadva, akkor az index megegyezik az iterációs szakasz attribútumával, azzal a különbséggel, hogy 1 helyett 0-val kezdődik.
Az iteráció a ciklus aktuális iterációs számának megjelenítésére szolgál.
Ez az érték független a start, step és max tulajdonságoktól, ellentétben az index tulajdonsággal. Ezenkívül az iterációk egytől kezdődnek, nem nullától, mint az indexek. A rownum az iterációs tulajdonság szinonimája, ugyanúgy működnek.
7.38. példa. tulajdonság (szakasz) iterációja
assign("custid",$id); ?> (szakasznév=cu loop=$custid start=5 step=2) iteration=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/ szakasz)
A példa futtatásának eredménye:
Iteráció=1 index=5 id=3005
iteráció=2 index=7 id=3007
iteráció=3 index=9 id=3009
iteráció=4 index=11 id=3011
iteráció=5 index=13 id=3013
iteráció=6 index=15 id=3015
Ez a példa az iterációs tulajdonságot használja a táblázat fejlécének minden ötödik sorban történő megjelenítéséhez (az (if)-t mod operátorral használja - modulo).
Név> | itthon | sejt | ||
---|---|---|---|---|
Kilátás | ($contacts.name) | ($contacts.home) | ($contacts.cell) | ($contacts.email) |
Ez a funkció a konfigurációs fájlok változóinak sablonba való betöltésére szolgál. Ennek a függvénynek a betöltendő fájl nevén kívül több további paramétere is lehet. Például a szakasz paraméter, amely megadja a betöltendő szakasz nevét. Ezekről és más lehetőségekről további információkat a Smarty dokumentációjában talál.
Példa:
(config_load file="task.conf")
(capture name="blokk_neve"
assign="változónév") ...
(/elfog)
Ennek a funkciónak az a célja, hogy a sablon kimenetét egy változóba gyűjtse a képernyőn való megjelenítés helyett.
Bármi, ami (capture name="varname") és (/capture) között van, egy varname nevű változóba lesz írva. Az így rögzített tartalom sablonban használható a $smarty.capture.varname speciális változó használatával, ahol a varname a következőnek átadott érték. név attribútum rögzítési funkciók. Ha nincs megadva változónév, akkor a rendszer az alapértelmezett értéket használja.
A második hozzárendelési paraméter adja meg annak a változónak a nevét, amelyhez a rögzítésre került kimeneti érték. Ez a paraméter, akárcsak a név, nem kötelező.
(szakasz neve="szakasz_neve"
loop="változó_kiszámítandó_az_iterációk_száma"
[,start="start_pozícióindex"]
[, step="step"] [,max="max_iterations"]
[,show="show_section"] )...
(/ szakasz)
A szakasz egy hurok egy tömb elemeinek bejárására. A szükséges paraméterek a name, amely a szakasz nevét adja meg, és a ciklus, amely egy változó, amely meghatározza a ciklus iterációinak számát.
A ciklus általában egy tömbváltozó, és egy szakasz iterációinak száma megegyezik a tömb elemeinek számával. A cikluson belüli változó megjelenítéséhez meg kell adnia a szakasz nevét szögletes zárójelben a változó neve után.
(szakasz neve=művészeti hurok=$cím)
Cím: ($title)
(/ szakasz)
15.8. példa. Hurok a tömb elemei közötti iterációhoz
(foreach from="tömb_neve"
item="jelenlegi_elem_neve")
... (/az egyes)
Ezenkívül használhat további attribútumkulcsot - a kulcs neve a tömb aktuális eleméhez és neve - a ciklus neve, amellyel hozzáférhet a tulajdonságaihoz. A from és item attribútumok kötelezőek.
A foreach hurkok a szakaszhurkok alternatívája. A foreach függvény nagyon hasonlít a PHP foreach ciklusához.
(foreach from=$articles item=art)
Cím: ($art)
(/az egyes)
Példa 15.9. foreach hurok
A foreach ciklusoknak megvannak a saját tulajdonságai. Ezeket a következőképpen érhetjük el: ($smarty.foreach.foreachname.varname), ahol a foreachname a hurok name paramétere által adott neve, a varname pedig a tulajdonság neve.
(ha kifejezés) action_block
(elseif kifejezés1) action_block1
(egyéb) action_block2
(/ha)
Az operátor működése szinte hasonló a PHP nyelv if...elseif...else operátorához.
A következő összehasonlító operátorok használhatók a kifejezésekben: eq, ne, neq, gt, lt, lte, le, gte, ge, páros, páratlan, nem páros, nem páratlan, nem, mod, div by, páros által, páratlan, ==, !=, >,<, <=, >=. Mindegyiket szóközzel kell elválasztani a környező értékektől. A kifejezésekben zárójelek használhatók, és PHP függvények hívhatók meg.
(ha $name eq "Vasya")
Üdvözöljük Vasya.
(elseif $name eq "Petya")
Isten hozott, Petya.
(más)
Üdvözöljük. És te ki vagy?
(/ha)
15.10. példa. if, elseif, else állítások
(* ez a példa nem működik, mert nincsenek szóközök az összehasonlító operátorok körül *)
(ha $name=="Vasya" || $name=="Péter")
...
(/ha)
Példa 15.11. Törött példa
Amikor saját készítésű oldalakat hozunk létre (keretrendszerek, CMS és egyéb divatos dolgok használata nélkül, amelyek megkönnyítik a webfejlesztők életét), azzal a problémával szembesülünk, hogy sok oldal esetén módosítani kell az oldalon.
Annak érdekében, hogy ne kelljen ugyanazokat az oldalrészeket módosítanunk az egyes oldalfájlokban, használhatunk kényelmes PHP-utasításokat, amelyek lehetővé teszik, hogy egyetlen kódsorral minden oldalra felvegyük a szükséges kódot tartalmazó fájlokat. Ezután a mellékelt fájl tartalmának megváltoztatásával megváltoztatjuk a kódot az oldal összes oldalán. Kényelmes, akárhogyan is nézzük.
Most nézzük meg részletesebben a fájlok összekapcsolásának módjait:
Nem fog tudni alapvető különbséget találni e két utasítás között minden vágyával, de vannak árnyalatok:
Ha hiba történik a request parancs végrehajtása során, az elemző végzetes hibaválaszt kap, és az oldalkód végrehajtása leáll, míg az include csak figyelmeztetést ad, és a fájl fut tovább (a fájl egyszerűen nem szerepeljen).
Vegyünk egy egyszerű példát a téma jobb megértéséhez.
Megvan a mini-webhelyünk, ahol a fejléc és a lábléc minden oldalon azonos, de a dokumentum törzse megváltozik.
Elkészítjük a header.php és a footer.php fájlokat, amelyekben elhelyezzük azt a kódot, amely minden oldalon azonos lesz, az index.php és newpage.php fájlokban pedig összekapcsoljuk a statikus részeket. Ennek eredményeként a következőket kapjuk:
header.php tartalom
< header> < nav> < a href= "newpage1.php" title= "menü tétel" >menü tétel a> < a href= "newpage2.php" title= "menü tétel" >menü tétel a> < a href= "newpage3.php" title= "menü tétel" >menü tétel a> nav> header>
lábléc.php tartalom
< footer> < p>Mi készítettük p> footer>
Az oldal egyéb oldalainak tartalma
Sok hasznos információ
Oldalunk betöltése eredményeként a következő képet kapjuk:
Amint látjuk, minden remekül működik.
Felhívjuk figyelmét, hogy a példát a továbbiakban futtattuk helyi szerver Denwer, mert azért PHP munka szüksége van egy szerverre a támogatásával. Ha létrehoz egy webhelyet egy egyszerű mappában a számítógépen, semmi sem fog működni.
A vizsgált példában a szükséges fejlécet használtuk a csatlakozáshoz, és az include láblécet. Ön dönti el, hogy mit használ a webhelyein. Mint már említettük, nincs sok különbség köztük. Kivéve, ha a követelmény valamivel szigorúbb utasításnak minősül.
Valójában a vonal egyszerűen bemásolja a fájl teljes tartalmát, az általunk megadott elérési utat, abba a dokumentumba, amelyben található.
A webhelyen végzett munka során problémák adódhatnak abból a tényből, hogy ugyanaz a kód többször szerepel egy fájlban.
Tegyük fel, hogy ez annak köszönhető, hogy többen dolgoztak az oldalon, és amikor a kódokat kombinálták, akkor egy ilyen incidens jött ki ...
Hogy kizárja annak lehetőségét hasonló problémákat a fejlesztők gyakran használják az include _once és a request _once utasításokat. Működési elvük pontosan ugyanaz, mint az include és a require-é, de ha az ilyen utasításban szereplő fájl már össze van kapcsolva a miénkkel, akkor az újracsatlakozás nem történik meg.
A hátrányokhoz ez a módszer annak tudható be, hogy lassabb és számításilag drágább, mint elődei include with request, mivel szükségessé válik az összes benne lévő fájl emlékezése és összehasonlítása a kódduplikáció elkerülése érdekében.