Smarty Template Engine 14.díl - Řídící struktury V.

Napsal (») 27. 5. 2009 v kategorii PHP/HTML, přečteno: 1038×
obrazky/smarty.gif

Smarty Template Engine 14.díl - Řídící struktury V.


V tomto díle budeme pokračovat v popisu práce s podmínkami, jež nám nabízí Smarty. Doposud jsme totiž nevyužili výrokovu logiku pro skládání a strukturování dotazů. Dále si upřesníme funkci příkazu {elseif}.


{else} - slouží k vymezení části kódu, jež se provede v případě, že podmínka vrátí hodnotu „false“.

{elseif} – používá se v případě, že chceme z určitě sekvence podmínek vyřadit některý případ.

index.php
require_once("./hlavicka.php");

$days = array('pondeli','utery','streda','ctvrtek','patek','sobota','nedele');
$smarty->assign('days', $days);

$smarty->display('index.tpl');
?>



index.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="cs" />
<title>
Smarty - index
</title>
</head>
<body>
<div>
<p>
{foreach from=$days item=d}
{$d} je {if $d == sobota}víkendový{elseif $d == nedele}sváteční{else}pracovní{/if} den.<br/>
{/foreach}

</p>
</div>
</body>
</html>


Ukázka použití „elseif“. V případě, že den má hodnotu sobota, nastavíme výpis na víkendový. Operátor „elseif“ zařizuje výpis „sváteční“ v případě, že den je nastaven jako neděle. V jakémkoliv jiném případě se vypíše, že jde o pracovní den.

Logické operátory a jejich spojování

AND ve Smarty:&&
Jde o tzv. logický součin. Tzn. že výsledek je true pouze v případě, že oba výrazy jsou zároveň pravda (protože cokoliv násobeno nulou, reprezentující nepravdu, vyjde nula, tudíž nepravda). AND představuje větu: Pokud platí A a zároveň B. Pokud bude kterýkoliv výrok v podmínce záporný, celá podmínka bude tedy taktéž nepravdivá.
OR ve Smarty:||
Jde o tzv. Logický součet. Tzn. že výsledek je true v případě, že alespoň jeden výraz je pravdivý. (protože cokoliv + 1 je zákonitě min. 1). OR představuje větu: Pokud platí A, nebo B. Pokud bude kterýkoliv výraz pravdivý, bude i celá podmínka pravdivá.
NEGACE ve Smarty:!
Negace označuje nepravdu, nebo-li obrací logickou hodnotu výrazu. Pokud bychom tedy měli např. Vykonat podmínku v případě, že den se nerovná středě:
{if $d != 'streda'}
funkce apod.
{/if}


V následujícím příkladě si budeme přát vypsat oblíbené dny, pokud jde o pátek, či sobotu a neoblíbené, pokud jde o zbytek týdne.

index.php
require_once("./hlavicka.php");

$days = array('pondeli','utery','streda','ctvrtek','patek','sobota','nedele');
$smarty->assign('days', $days);

$smarty->display('index.tpl');
?>


index.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="cs" />
<title>
Smarty - index
</title>
</head>
<body>
<div>
<p>
{foreach from=$days item=d}
{$d} je {if $d == patek or $d == sobota}můj oblíbený
{else}pracovní, tudíž i neoblíbený{/if} den.<br/>
{/foreach}

</p>
</div>
</body>
</html>


A v případě,že chceme vypsat něco v případě, že platí alespoň jedna z podmínek (je svátek a zároveň víkend), použijeme AND. Všimněte si, že podmínku můžeme vnořit do předchozí podmínky, je však potřeba dodržet pořadí zavření.
index.php
<?php
require_once("./hlavicka.php");

$days[0] = array('name' => 'pondeli', 'shrt' => 'prac');
$days[1] = array('name' => 'utery', 'shrt' => 'prac');
$days[2] = array('name' => 'streda', 'shrt' => 'prac');
$days[3] = array('name' => 'ctvrtek', 'shrt' => 'prac');
$days[4] = array('name' => 'patek', 'shrt' => 'svatek');
$days[5] = array('name' => 'sobota', 'shrt' => 'vikend');
$days[6] = array('name' => 'nedele', 'shrt' => 'svatek');
$smarty->assign('days', $days);

$smarty->display('index.tpl');
?>


index.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="cs" />
<title>
Smarty - index
</title>
</head>
<body>
<div>
<p>
{foreach from=$days item=d}
{$d.name} je
{if $d.shrt == 'svatek' and ($d.name != 'sobota' or $d.name != 'nedele')}je svátek {if $d.name == 'sobota' or $d.name == 'nedele'},ale komu je platný o víkendu{/if}
{else}pracovní den{/if}.<br/>
{/foreach}

</p>
</div>
</body>
</html>
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel pět a osm