Jump to content
  • 0

Функции ветвления


Vlad
 Share

Question

Практически во всех языках программирования встречаются функции ветвления, которые также называются условными операторами. Речь идет о конструкции if...else, позволяющей задавать разные условия выполнения блоков программы. В шаблонах Smarty тоже встречаются эти операторы, но в виде функций {if}, {else}, {elseif} и {/if}. Общий синтаксис следующий.

{if условие1}
При выполнении условия 1 отображать данный блок.
{elseif условие 2}
При выполнении условия 2 отображать данный блок.
{else}
Если вышеприведенные условия не выполнены, то выводить этот блок.
{/if}

При необходимости функции {elseif} и {else} можно опустить.

Под условием подразумевается набор некоторых логических факторов, которые могут быть выполнены или нет. Например, проверка того, ввел ли пользователь требуемый текст.

Простое условие имеет следующий вид: {if $ok}. Оно выполняется, если переменная $ok существует и не равна нулю. Однако в большинстве случаев недостаточно просто проверить, есть переменная или нет. Как правило, требуется сравнивать значения между собой, определять больше или меньше значение определенного числа и проделывать другие арифметические операции. Для этой цели применяются квалификаторы вроде >,

В табл. 1 приведены наиболее распространенные квалификаторы, применяемые в условиях.

Табл. 1. Квалификаторы

Квалификатор Синоним Пример Описание

> gt {if $num > 5} Больше

== eq {if $smarty.get.sec == 'edit'} Равно

!= ne {if $smarty.get.print != 1} Не равно

>= gte, ge {if $num >= 0} Больше или равно

! not {if !$existTheme} Логическое НЕ

|| {if $smarty.get.sec == 'add' || !$smarty.get.sec} Логическое ИЛИ

&& {if ($smarty.get.id && $okmsg) || !$smarty.get.id} Логическое И

В примере 1 продемонстрировано использование операторов ветвления для выделения текущего пункта меню на сайте.

Пример 1. Проверка условий

<div id="toc">
<div class="titlenav">{$section}</div>
<div class="nav">
{foreach from=$title item="entry"}
{if $smarty.get.id == $entry.course_id}
<div class="curnav">{$entry.course_title}</div>
{else}
<div><a href="/course/?id={$entry.course_id}">{$entry.course_title}</a></div>
{/if}
{/foreach}
</div>
</div>

В данном примере проверяется, равняется ли значение параметра id, полученное по методу GET, текущему значению переменной course_id, выбранной из базы данных. В случае если они равны, пункт меню помечается классом curnav. А иначе пункт меню делается ссылкой на соответствующий раздел сайта.

Логические И, ИЛИ обычно применяются для проверки сразу нескольких условий. Например, требуется установить, что пользователь ввел свой возраст в пределах от 16 до 90 лет. Условие при такой постановке будет следующим (пример 2).

Пример 2. Использование логического И

{if $smarty.get.old >= 16 && $smarty.get.old <= 90}
Возраст указан в нужном диапазоне
{else}
Возраст указан неверно

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy