<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>{if},{elseif},{else}</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="language.builtin.functions.html" title="Chapter 7. Встроенные функции">
<link rel="prev" href="language.function.foreach.html" title="{foreach},{foreachelse}">
<link rel="next" href="language.function.include.html" title="{include}">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">{if},{elseif},{else}</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.function.foreach.html">Prev</a> </td>
<th width="60%" align="center">Chapter 7. Встроенные функции</th>
<td width="20%" align="right"> <a accesskey="n" href="language.function.include.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="{if},{elseif},{else}">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.function.if"></a>{if},{elseif},{else}</h2></div></div></div>
<p>
Конструкция <span class="emphasis"><em>{if}</em></span> в Smarty такая же гибкая, как и
конструкция
<a class="ulink" href="http://php.net/if" target="_top"><span class="command"><strong>if</strong></span></a> в PHP,
только с несколькими дополнительными возможностями для шаблонов.
Каждый тэг <span class="emphasis"><em>{if}</em></span> должен иметь пару
<span class="emphasis"><em>{/if}</em></span>. <span class="emphasis"><em>{else}</em></span> и
<span class="emphasis"><em>{elseif}</em></span> так же допустимы. Досутпны все квалификаторы
и функции
из PHP, такие как <span class="emphasis"><em>||</em></span>, <span class="emphasis"><em>or</em></span>,
<span class="emphasis"><em>&&</em></span>, <span class="emphasis"><em>and</em></span>,
<span class="emphasis"><em>is_array()</em></span> и т.д.
</p>
<p>
Если <a class="link" href="variable.security.html" title="$security">$security</a> включена,
то массив <span class="emphasis"><em>IF_FUNCS</em></span> в массиве <a class="link" href="variable.security.settings.html" title="$security_settings">$security_settings</a>.
</p>
<p>
Ниже следует список распознаваемых квалификаторов, которые должны быть
отделены от окружающих элементов пробелами. Обратите внимания, что
объекты в [квадратных скобках] являются необязательными. Иногда указаны
эквиваленты в PHP.
</p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th align="center">Квалификатор</th>
<th align="center">Альтернативы</th>
<th>Пример синтаксиса</th>
<th>Описание</th>
<th>Эквивалент PHP</th>
</tr></thead>
<tbody>
<tr>
<td align="center">==</td>
<td align="center">eq</td>
<td>$a eq $b</td>
<td>равно</td>
<td>==</td>
</tr>
<tr>
<td align="center">!=</td>
<td align="center">ne, neq</td>
<td>$a neq $b</td>
<td>не равно</td>
<td>!=</td>
</tr>
<tr>
<td align="center">></td>
<td align="center">gt</td>
<td>$a gt $b</td>
<td>больше</td>
<td>></td>
</tr>
<tr>
<td align="center"><</td>
<td align="center">lt</td>
<td>$a lt $b</td>
<td>меньше</td>
<td><</td>
</tr>
<tr>
<td align="center">>=</td>
<td align="center">gte, ge</td>
<td>$a ge $b</td>
<td>больше или равно</td>
<td>>=</td>
</tr>
<tr>
<td align="center"><=</td>
<td align="center">lte, le</td>
<td>$a le $b</td>
<td>меньше или равно</td>
<td><=</td>
</tr>
<tr>
<td align="center">===</td>
<td align="center"> </td>
<td>$a === 0</td>
<td>проверка идентичности</td>
<td>===</td>
</tr>
<tr>
<td align="center">!</td>
<td align="center">not</td>
<td>not $a</td>
<td>отрицание</td>
<td>!</td>
</tr>
<tr>
<td align="center">%</td>
<td align="center">mod</td>
<td>$a mod $b</td>
<td>остаток от деления</td>
<td>%</td>
</tr>
<tr>
<td align="center">is [not] div by</td>
<td align="center"> </td>
<td>$a is not div by 4</td>
<td>возможно деление без остатка</td>
<td>$a % $b == 0</td>
</tr>
<tr>
<td align="center">is [not] even</td>
<td align="center"> </td>
<td>$a is not even</td>
<td>[не]чётно</td>
<td>$a % 2 == 0</td>
</tr>
<tr>
<td align="center">is [not] even by</td>
<td align="center"> </td>
<td>$a is not even by $b</td>
<td>[не]чётно значению</td>
<td>($a / $b) % 2 == 0</td>
</tr>
<tr>
<td align="center">is [not] odd</td>
<td align="center"> </td>
<td>$a is not odd</td>
<td>[не]нечётно</td>
<td>$a % 2 != 0</td>
</tr>
<tr>
<td align="center">is [not] odd by</td>
<td align="center"> </td>
<td>$a is not odd by $b</td>
<td>[не]нечётно значению</td>
<td>($a / $b) % 2 != 0</td>
</tr>
</tbody>
</table></div>
<div class="example">
<a name="id2671252"></a><p class="title"><b>Example 7.15. примеры использования {if}</b></p>
<div class="example-contents"><pre class="programlisting">
{if $name eq 'Fred'}
Welcome Sir.
{elseif $name eq 'Wilma'}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
{* пример с логикой "или" *}
{if $name eq 'Fred' or $name eq 'Wilma'}
...
{/if}
{* то же самое, что и выше *}
{if $name == 'Fred' || $name == 'Wilma'}
...
{/if}
{* скобки разрешены *}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
...
{/if}
{* вы также можете использовать функции php *}
{if count($var) gt 0}
...
{/if}
{* проверка на массив *}
{if is_array($foo) }
...
{/if}
{* проверка на существование *}
{if isset($foo) }
...
{/if}
{* проверяет чётность значений *}
{if $var is even}
...
{/if}
{if $var is odd}
...
{/if}
{if $var is not odd}
...
{/if}
{* проверяет, делится ли $var на 4 без остатка *}
{if $var is div by 4}
...
{/if}
{*
проверяет, является ли $var чётным двум, например
0=чётно, 1=чётно, 2=нечётно, 3=нечётно, 4=чётно, 5=чётно и т.д.
*}
{if $var is even by 2}
...
{/if}
{* 0=чётно, 1=чётно, 2=чётно, 3=нечётно, 4=нечётно, 5=нечётно и т.д. *}
{if $var is even by 3}
...
{/if}
</pre></div>
</div>
<br class="example-break"><div class="example">
<a name="id2671265"></a><p class="title"><b>Example 7.16. ещё несколько примеров использования {if}</b></p>
<div class="example-contents"><pre class="programlisting">
{if isset($name) && $name = 'Blog'}
{* сделать что-нибудь *}
{elseif $name == $foo}
{* сделать что-нибудь другое *}
{/if}
{if is_array($foo) && count($foo) > 0)
{* выполнить цикл foreach *}
{/if}
</pre></div>
</div>
<br class="example-break">
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.function.foreach.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="language.builtin.functions.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.function.include.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">{foreach},{foreachelse} </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> {include}</td>
</tr>
</table>
</div>
</body>
</html>