Глава 4. Переменные

Содержание
Переменные, установленные в PHP
Переменные файлов конфигурации
Зарезервированная переменная {$smarty}

Smarty имеет несколько различных типов переменных. Он зависит от символа, с которого начинается, или в какой заключена переменная.

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

[
{$Name}

{$Contacts[row].Phone}

<body bgcolor="{#bgcolor#}">

Переменные, установленные в PHP

Переменные, установленные в PHP, употребляются со знаком доллар $ перед ним. Переменные, установленные в шаблоне с помощью функции assign употребляются аналогичным образом.

Пример 4-1. Установленные переменные

Привет {$firstname}, мы рады снова тебя видеть.
<p>
Последний раз ты посещал нас {$lastLoginDate}.

OUTPUT:

Привет Петя, мы рады снова тебя видеть.
<p>
Последний раз ты посещал нас January 11th, 2001.

Ассоциативные массивы

Чтобы использовать переменную из ассоциативного массива, надо указать ключ элемента после знака '.' (точка).

Пример 4-2. доступ к перременным ассоциативного массива

index.php:

$smarty = new Smarty;
$smarty->assign('Contacts',
  array('fax' => '555-222-9876',
        'email' => 'zaphod@slartibartfast.com',
        'phone' => array('home' => '555-444-3333',
                         'cell' => '555-111-1234')));
$smarty->display('index.tpl');

index.tpl:

{$Contacts.fax}<br>
{$Contacts.email}<br>
{* you can print arrays of arrays as well *}
{$Contacts.phone.home}<br>
{$Contacts.phone.cell}<br>

OUTPUT:

555-222-9876<br>
zaphod@slartibartfast.com<br>
555-444-3333<br>
555-111-1234<br>

Индексированные массивы

Можно использовать переменную из массива по е индексу. Синтаксис аналогичен PHP.

Пример 4-3. доступ к елементу массива по его индексу

index.php:

$smarty = new Smarty;
$smarty->assign('Contacts',
  array('555-222-9876',
        'zaphod@slartibartfast.com',
        array('555-444-3333',
              '555-111-1234')));
$smarty->display('index.tpl');

index.tpl:

{$Contacts[0]}<br>
{$Contacts[1]}<br>
{* you can print arrays of arrays as well *}
{$Contacts[2][0]}<br>
{$Contacts[2][1]}<br>

OUTPUT:

555-222-9876<br>
zaphod@slartibartfast.com<br>
555-444-3333<br>
555-111-1234<br>

Объекты

Чтобы использовать свойства обьектов, надо указать перед именем атрибута знак `->'.

Пример 4-4. доступ к свойствам объекта

name: {$person->name}<br>
email: {$person->email}<br>

OUTPUT:

name: Zaphod Beeblebrox<br>
email: zaphod@slartibartfast.com<br>