Autor Zpráva
noway
Profil
Dobrý den,založil jsem globálnější téma smarty,protože s ním začínám a jelikož je to docela solidní šablonovací systém,myslím že se bude hodit dané téma i ostatním.

Potřeboval bych 2 věci.

1.věc mě co mě zajímá jakým způsobem doporučujte předávat stránky ve smartech... Nějaké malé zkušenosti mám s GET['page'] ,ale nevím jestli je to správná volba...myslíte,že bych měl použít něco jiného?

2.proměné ve smartech ... tady jsem hrubě narazil... protože co jsem pochopil tak proměnou mohu vytvářet jen v např.pokus.php kde ji nadefinuji a dám ji nějakou hodnotu .. ale představme si nasledující příklad:

pokus.php obsahuje


<?php
require '../libs/Smarty.class.php';

$smarty = new Smarty();
$smarty->template_dir = "../templates";
$smarty->compile_dir = "../templates_c";
$smarty->cache_dir = "../cache";
$smarty->config_dir = "../configs";

$smarty->assign("promenna","1")
$smarty->display("sablona.tpl");

a v sablona.tpl budu mit např.


{ if (nejaka podminka)}
$promenna=0
{else}
$promenna=3


toto prostě nefunguje protože smarty odmítají takto pracovat s proměnýma.. nějaký nápad.?mohl bych to sice řešit tím že bych tam hodil {php} a {/php} a tam to ošetřil ale pokud veme na vědomí to že bych měl tady to v dalším souboru který by se includoval ... tak bych se pak k těm proměným nedostal.uvedu příklad.

pokus.php zůstaqne stejný.

obsahem sablona.tpl bude


{include file ="sablona2.tpl"}
{if $promenna==3}
dostal jsem se k proměnné
{else}
nedostal jsem se k proměnné..
{/if}


a konečně soubor sablona2.tpl obsahuje


$promenna=3


jak mám tedy používat proměnné ve smartech tak abych jim mohl přiřazovat hodnoty.Podle mě to vůbec nejde a musím to řešit přes script php a nebo jediná varianta co mě napadla je to že si tu proměnou mohu nadefinovat v pokus.php tak jak jsem to udělal mohu jí přiřadit nějakou hodnotu.. to jde ale už nevím jak pak v těch šablonách tu hodnotu měnit...
Timy
Profil
Přiznám se, že tuhle část kódu moc nechápu:

{ if (nejaka podminka)}
$promenna=0
{else}
$promenna=3

Nebylo by logičtější tohle provést přímo v pokus.php? Tedy asi nějak takto?

<?php
//zacatek smarty
if($podminka)
$promenna=0;
else
$promenna=3;

$smarty->assign("promenna",$promenna);
$smarty->display("sablona.tpl");

a sablona.tpl:
{if $promenna==3}
dostal jsem se k proměnné
{else}
nedostal jsem se k proměnné..
{/if}
noway
Profil
aha jsem to vzal moc obecně já sem se snažil to hodně zjednodušit nenapadlo mě že by to mohl někdo pochopit takto,takže to trochu rozvedu.to co jsem napsal byl jen příklad kvůli těm proměným... není to jako funkční code... který bych používal ... chtěl jsem jen demonstrovat to jak měnit tu proměnou ... protože jde o to že v tom souboru .tpl se mi bude vykonavat nějaký kód například se mi tam bude kontrolovat jestli někdo nezapoměl vyplnit nějaké formulářové pole, a pokud zapoměl,tak se do proměnné $erorrs uloží 1. a pak se to bude někde v jiném tpl.testovat jestli nemá $erorrs hodnotu 1 pokud ano tak se vypise typ chyby nebo tak... sice to taky není kod co používám,ale snad to nastínilo více daný problém ... jak jsem řekl php script se dle mě nedá použít protože jeden z tech .tpl bude pomocí include... nebo pokud někdo ví jak na to... sem s tím
bukaj
Profil
noway
Řekl bych, že nejjednodušší bude, když si prostuduješ manuál na smarty.php.net. Tam by ses měl dočíst všechny podstatné základní věci.

Ale to o co předpokládám, že ti jde, by měla vyřešit Smarty fce {assign}.
noway
Profil
zrovna jsem na ni taky narazil :-)
díky... já se ještě určitě ozvu těch problému budu mít více... :-)
noway
Profil
Tak problém na sebe nenechal dlouho čekat.. sice to funguje ... ale jen v jednom souboru .tpl
to znamená že mám řekněme 2 .tpl soubory např pokus1.tpl a pokus2.tpl

v pokusu 1.tpl
mam include na pokus2.tpl

v pokusu 2.tpl si nastavim promenné na nejaké hodnoty.
a zpatky v pokusu 1.tpl si je testuju jestli splnuji nejaké požadavky...


potřebuji to vyřešit přesně takto.jak na to.Assign funguje jen v pokus2.tpl .. pokus1.tpl už ho nezná...je to tedy lokální proměnná.. potřebuji něco jako globální ...
noway
Profil
vlastně potřebuji abych to co nadefinuji v pokus2.tpl mohl pouzit v pokus1.tpl .... obracene to samozrejme funguje.Nebo jeste lepe potrebuju vyuzivat nejake globalni promene...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0