|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
PHP knihovny - Smarty II.V tomto druhém díle se podíváme na základy syntaxe Smarty šablon a úpravách výstupních dat.
Syntaxe šablonSyntaxe je způsob, jakým píšete v běžném, nebo programovacím jazyce slova, či příkazy, tak, aby jste docílili významu, nebo činnosti, jaké chcete, potřebujete. Smarty šablony jsou standardní html kód, ve kterém se objevují příkazy šablon, práce s konstantami, proměnnými a poli. Párové příkazy Smarty se píší pomocí páru {prikaz} a {/prikaz}, kde složené závorky představují oddělovače definované ve tříde Smarty. Mezi párové příkazy se nejčastěji uzavírají bloky cyklů a podmínek. Oddělovače (delimiters)Smarty šablony, jak bylo napsáno minule, se kompilují do PHP scriptů a to tak, že vše co je nějaký modifikátor, nebo příkaz Smarty je nahrazeno ekvivalentem v PHP. Aby třída Smarty_Compiler.class.php poznala které části má nahradit/zkompilovat, musíme použít oddělovače. Oddělovače si můžete sami nadefinovat nastavením proměnných Oddělovače se Vám nesmí v šabloně už nikde objevit, protože vše co je mezi nimi je považováno za příkazy/proměnné Smarty a překladač by se je pokoušel zpracovat, což by vedlo k chybovým hláškám. Problém by se mohl vyskytnout, pokud používáte při tvorbě WWW stránek i JavaScripty. To můžete obejít tím, že do šablony vložíte místo levého oodělovače příkaz {ldelim} a místo pravého {rdelim}, případně celý blok uzavřete mezi příkazy/modifikátory {literal} a {literal}. Ukázka JavaScriptu vloženého oběma způsoby (kód je vložen preXML způsobem): <script language="JavaScript"><!-- function setWidth{ldelim} tabWidth=(document.body.clientWidth||window.innerWidth)-380; if(tabWidth>500){ldelim} tabWidth=500; {rdelim} document.getElementById('mainTab').style.width=tabWidth; {rdelim} --></script> <script language="JavaScript"><!-- {literal} function setWidth{ tabWidth=(document.body.clientWidth||window.innerWidth)-380; if(tabWidth>500){ tabWidth=500; } document.getElementById('mainTab').style.width=tabWidth; } {/literal} --></script> Druhý způsob zápisu je 100% přehlednější. Oddělovače nemusí být nutně jeden jediný znak, takže lze použít například předefinování na Příkazy, proměnné a komentáře v šablonáchPříkazy ve Smarty šablonách se píší mezi oddělovače, {prikaz atribut1='hodnota'} je obecným příkladem a Proměnné k zobrazení pomocí Smarty šablon je třeba definovat na hodnotu, kterou potřebujete zobrazit. Obvykle na WWW stránkách zobrazujete data z databáze, případně i ty dále zpracované. K přiřazení hodnoty do proměnné ve Smarty slouží v PHP funkce assign a přímo v šalboně příkaz assign. PHP funkce má zápis $trida->assign('nazev',$hodnota), kde třída je autorem vytvořený třída Smarty (v příkladě z předchozího dílu je to $page), nazev je řetězec, pod kterým uvidíme proměnnou/pole/objekt v šabloně a $hodnota je proměnná, pole, nebo objekt, jehož hodnotu chceme přiřadit. Pokud je třeba definovat proměnnou přímo v šabloně, slouží k tomu příkaz Proměnné se zapisují stejným stylem, jako v "čistém" PHP, tj. uvozene znakem $ (string), vložení do stránky tedy provedete tedy pomocí {$nazev}. Pokud máme do $nazev přiřazeno pole, přistupujeme k jeho složkám přes "tečkovou notaci", například Smarty vývojářům poskytuje speciální asociativní pole $smarty, ve které jsou uloženy hodnoty superglobálních polí $_POST ($smarty.post), $_GET ($smarty.get), $_REQUEST, $_ENV, $_COOKIE ($smart.cookies), $_SESSION a $_SERVER, konstanty, které v PHP definujeme pomocí funkce define, několik dalších konstant definovaných přímo Smarty, mezi něž patří $smarty.now pro aktuální čas v unixovém formátu, $smarty.template s názvem aktuálně zpracovávané šablony, $smarty.version ve které uložená verze používaného Smarty a mnohé další související s některými funkcemi. Smarty umí zpracovat i vložené proměnné v řetězcích. Pro tento případ platí stejná pravidla jako v PHP, tj. proměnné nesmí být v apostrofech (''), ale v normálních uvozovkách (""), pokud pouzijete hodnotu z asociativniho pole, musite celou "cestu" polem uzavrit do zpetnych apostrofu (na anglicke klavesnici pod klavesou Esc). Hodnota vkládané proměnné musí být známe před jejím vložením. Níže uvedený kód je ukázkou definování proměnné v šabloně, jejího vložení do nové proměnné a zobrazení této nově definované proměnné. Zároveň je do vkládané proměnné vložena nová hodnota, aby bylo zřejmé, že ta se nevkládá při zobrazení a zobrazena verze Smarty. {assign var='number' value='prvni'} {assign var='prom' value="Moje $number embeded promenna"} {assign var='number' value='druha'} {$prom} Vložená (embeded) proměnná může být definována nejen ve Vaší šabloně, ale i v PHP scriptu. Vložení hodnoty z pole se realizuje pomocí {assign var='nova' value="Moje `$pole.jmeno` pojmenovaná proměnná"}. Při programování rozsáhlejších aplikací a ve větších šablonách jsou užitečným pomocníkem komentáře. Protože šablona je běžný html kód, lze použít HTML komentáře ve tvaru <!-- komentar -->, nebo komentáře poskytované Smarty systémem, které se zapisují {* smarty komentar *} Smarty a EZ_SQLNa serveru LinuxSoft.cz byl publikován popis objektového wraperu pro přístup k SQL databázím EZ_SQL. Kombinace těchto dvou knihoven funguje velice snadno. V níže uvedeném příkladě vybereme z článků podstatná data (id, datum zveřejnění, název, abstrakt a vlastní obsah), ale jen z těch článků, které mají povolené zobrazení. Následné zobrazení se realizuje v šabloně pomocí cyklu, které patří k řídícím strukturám probíraným později (nebude zde teď uvedena). $page->assign('articles', $db->get_results('SELECT id, datum, title, '. 'abstract, description FROM '.DBPREFIX. 'articles WHERE visible=\'yes\'', ARRAY_A)); ModifikátorySmarty jsou nástrojem určeným primárně pro zobrazení již zpracovaných dat, které je ale občas nutné ještě přispůsobit k zobrazení, tzn. nahradit některé znaky, ostranit backslashe, zkrátit řetězce, upravit formát datumu, ... Modifikátory budou popsány abecedně, podobné modifikátory sloučím do jednoho bodu. Způsob použití modifikátorů bude velice blízký lidem používajícím alespoň občas terminál v UN*Xových systémech. Zapisují se pomocí pipe (roury) stylem co|modifikator, například
Několik příkladů na použití modifikátorů: {* Definovani retezcu *} {assign var='retez1' value='Toto je prvni retezec urceny pro'. ' priklad modifikatoru ve Smarty sablonach, x5'} {assign var='retez2' value="'retezec' obsahujici i nejake nebezpecne znaky, napriklad <>"} {assign var='retez3' value="<a href='http://www.linuxsoft.cz'>linuxsoft.cz</a>"} {assign var='mail' value='ja@doma.server.cz'} {* zpracovani pomoci modifikatoru *} {$retez1} Výstupy z výše uvedených příkladů: Toto je prvni retezec urceny pro priklad modifikatoru ve Smarty sablonach, x5 ZávěremV tomto díle jsme se seznámili se syntaxí Smarty a s modifikací dat pro jejich výstup. Zároveň jsme si ukázali propojení Smarty a EZ_SQL, respektive jeho první polovinu, protože zobrazení dat přiřazených do pole budete moci udělat, až budete umět cykly. Příště se zaměříme na řídící struktury a právě zmíněné cykly a budete umět vše, co potřebujete pro základní použití Smarty šablon při vývoji Vašich WWW aplikací.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |