What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Table of Contents
Smarty имеет несколько различных типов переменных. Он зависит от символа, с которого начинается, или в какой заключена переменная.
Переменные в Smarty могут быть отображены или использованы как функции, аргументы, модификаторы, внутри выражений условных операторов и т.д. Для вывода значения переменной необходимо указать имя переменной между разделителями.
Example 4.1. Пример использования переменных
[ {$Name} {$product.part_no} <b>{$product.description}</b> {$Contacts[row].Phone} <body bgcolor="{#bgcolor#}">
При помощи отладочной консоли можно легко просмотреть значения переменных Smarty.
К переменным, которые были
назначены из PHP можно обратиться,
указав перед их именем знак доллара ($
).
Переменные, назначенные внутри шаблона при помощи функции
{assign}
работают таким же образом.
Example 4.2. Назначенные переменные
PHP-скрипт
<?php $smarty = new Smarty; $smarty->assign('firstname', 'Doug'); $smarty->assign('lastname', 'Evans'); $smarty->assign('meetingPlace', 'New York'); $smarty->display('index.tpl'); ?>
Содержимое index.tpl:
Hello {$firstname} {$lastname}, glad to see you can make it. <br /> {* это не сработает, потому что переменные чувствительны к регистру *} This weeks meeting is in {$meetingplace}. {* а это - сработает *} This weeks meeting is in {$meetingPlace}.
Результат обработки:
Hello Doug Evans, glad to see you can make it. <br /> This weeks meeting is in . This weeks meeting is in New York.
Вы можете также обращаться к ассоциативным массивам, которые назначены из PHP, указав ключ после символа '.' (точка).
Example 4.3. Обращение к ассоциативному массиву
<?php $smarty->assign('Contacts', array('fax' => '555-222-9876', 'email' => 'zaphod@slartibartfast.example.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 />
Результат обработки:
555-222-9876<br /> zaphod@slartibartfast.example.com<br /> 555-444-3333<br /> 555-111-1234<br />
Вы можете обращаться к массивам по их индексам примерно так же, как и в самом PHP.
Example 4.4. Обращение к массиву по индексу
<?php $smarty->assign('Contacts', array( '555-222-9876', 'zaphod@slartibartfast.example.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 />
Результат обработки:
555-222-9876<br /> zaphod@slartibartfast.example.com<br /> 555-444-3333<br /> 555-111-1234<br />
К свойствам объектов, назначенных из PHP, можно обратиться, указав имя свойства после символов '->'.
Example 4.5. Обращение к свойствам объекта
name: {$person->name}<br /> email: {$person->email}<br />
Результат обработки:
name: Zaphod Beeblebrox<br /> email: zaphod@slartibartfast.example.com<br />