Главная страница
Навигация по странице:

  • Синтаксис параметров функции

  • Синтаксис внедренных переменных

  • Пример 3-7. Изменение разделителей

  • Установленные переменные

  • Доступ к переменным ассоциативного массива

  • Доступ к элементу массива по его индексу

  • Доступ к свойствам объекта

  • Переменные из файлов конфигурации

  • Методические указания к выполнению лабораторных и курсовой работ ЙошкарОла 2007


    Скачать 0.8 Mb.
    НазваниеМетодические указания к выполнению лабораторных и курсовой работ ЙошкарОла 2007
    Дата15.03.2022
    Размер0.8 Mb.
    Формат файлаdoc
    Имя файлаsql (1).doc
    ТипМетодические указания
    #397929
    страница11 из 11
    1   2   3   4   5   6   7   8   9   10   11

    Комментарии


    Комментарии в шаблонах заключаются в звездочки(*) окруженные . разделителями, например: {* это комментарий *}. Комментарии не отображаются в выводе шаблона. Они используются для внутренних примечаний в шаблонах.
    Комментарии

    {* шаблон Smarty *}

    {* подключаем шапку шаблона *}

    {include file="header.tpl"}

    {include file=$includeFile}

    {include file=#includeFile#}
    {* выпадающий список *}





    Переменные


    Переменные шаблона начинаются со знака доллара. Они могут состоять из цифр, букв, знаков подчёркивания - как и обычные переменные PHP. Можно обращаться к массивам, имеющим числовые и нечисловые индексы. Также можно обращаться к свойствам и методам объектов. Переменные конфигурационного файла - это исключения из долларового синтаксиса. К ним можно обращаться, окружив их решетками или воспользовавшись специальной переменной $smarty.config.
    Переменные

    {$foo} <-- отображение простой переменной (не массив и не объект)

    {$foo[4]} <-- отображает 5-й элемент числового массива

    {$foo.bar} <-- отображает значение ключа "bar" ассоциативного массива, подобно PHP $foo['bar']

    {$foo.$bar} <-- отображает значение переменного ключа массива, подобно PHP $foo[$bar]

    {$foo->bar} <-- отображает свойство "bar" объекта

    {$foo->bar()} <-- отображает возвращаемое значение метода "bar" объекта

    {#foo#} <-- отображает переменную "foo" конфигурационного файла

    {$smarty.config.foo} <-- синоним для {#foo#}

    {$foo[bar]} <-- синтаксис доступен только в цикле section, см. {section}
    Также доступно множество других комбинаций
    {$foo.bar.baz}

    {$foo.$bar.$baz}

    {$foo[4].baz}

    {$foo[4].$baz}

    {$foo.bar.baz[4]}

    {$foo->bar($baz,2,$bar)} <-- передача параметра

    {"foo"} <-- статические значения также разрешены

    Функции


    Каждый тэг Smarty либо выводит значение переменной,либо вызывает некоторую функцию. Для вызова функции надо название функции и ее параметры заключить в разделители, например: {funcname attr1="val" attr2="val"}.
    Синтаксис функций

    {config_load file="colors.conf"}
    {include file="header.tpl"}
    {if $highlight_name}

    Welcome, {$name}!

    {else}

    Welcome, {$name}!

    {/if}
    {include file="footer.tpl"}

    И встроенные, и пользовательские функции используются с одинаковым синтаксисом. Встроенные функции реализованы внутри Smarty и не могут быть изменены или переопределены. Это такие функции, как if, section, strip. Пользовательские функции реализуются через плагины. Примеры пользовательских функций: html_options, html_select_date.

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

    Некоторые параметры принимают логические значения (правда или ложь). Они могут быть указаны словами true, on, и yes, или false, off, и no без кавычек.
    Синтаксис параметров функции

    {include file="header.tpl"}
    {include file=$includeFile}
    {include file=#includeFile#}
    {html_select_date display_days=yes}




    Внедренные переменные в двойных кавычках


    Smarty распознает переменные, если они встречаются в строках, заключенных в двойные кавычки. Распознаются переменные, состоящие из чисел, букв, символов подчеркивания и квадратных кавычек. Если надо использовать другие символы для обозначения переменной (точка, указатель объекта и т.д.), то переменную необходимо заключить в обратные кавычки. В данном случае нельзя использовать модификаторы, их следует применять вне кавычек.
    Синтаксис внедренных переменных

    Пример синтаксиса:

    {func var="test $foo test"} <-- ищет $foo

    {func var="test $foo_bar test"} <-- ищет $foo_bar

    {func var="test $foo[0] test"} <-- ищет $foo[0]

    {func var="test $foo[bar] test"} <-- ищет $foo[bar]

    {func var="test $foo.bar test"} <-- ищет $foo (не $foo.bar)

    {func var="test `$foo.bar` test"} <-- ищет $foo.bar

    {func var="test `$foo.bar` test"|escape} <-- модификатор вне кавычек!
    Практические примеры:

    {include file="subdir/$tpl_name.tpl"} <-- заменит $tpl_name на ее значение

    {cycle values="one,two,`$smarty.config.myval`"} <-- надо заключать в обратные кавычки

    Арифметические операции


    Арифметические операции могут совершаться непосредственно над значениями переменных.

    Примеры арифметики

    {$foo+1}
    {$foo*$bar}
    {* несколько более сложных примеров *}
    {$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
    {if ($foo+$bar.test%$baz*134232+10+$b+10)}
    {$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
    {assign var="foo" value="`$foo+$bar`"}

    Предотвращение обработки Smarty


    Иногда необходимо, чтобы Smarty не обрабатывал часть шаблона, которая должна по умолчанию обрабатываться. Классическим примером такой ситуации является встраивание Javascript или CSS-кода в шаблон. Проблема появляется из-за того, что эти языки используют символы { и }, которые так же используются в качестве разделителей для Smarty.

    Самым простым решением является избежание этой ситуации путём выноса Javascript'а и CSS-кода в отдельные файлы и использования стандартных методов HTML для доступа к ним.

    Дословное включение контента возможно при помощи блоков {literal} .. {/literal}. Подобно тому, как вы используете HTML-сущности (  и т.п.), можно использовать {ldelim},{rdelim} или {$smarty.ldelim},{$smarty.rdelim} для отображения текущих разделителей.

    Порой бывает удобно просто изменить свойства $left_delimiter и $right_delimiter в объекте Smarty.

    Пример 3-7. Изменение разделителей


    $smarty = new Smarty;
    $smarty->left_delimiter = '
    $smarty->right_delimiter = '}-->';
    $smarty->assign('foo', 'bar');
    $smarty->display('example.tpl');

    ?>

    Шаблон example.tpl:


    Переменные


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

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

    [

    {$Name}
    {$Contacts[row].Phone}

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


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

    Привет {$firstname}, мы рады снова тебя видеть.
    Последний раз ты посещал нас {$lastLoginDate}.
    OUTPUT:
    Привет Петя, мы рады снова тебя видеть.
    Последний раз ты посещал нас January 11th, 2001.

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


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

    Доступ к переменным ассоциативного массива

    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}


    {$Contacts.email}


    {* you can print arrays of arrays as well *}

    {$Contacts.phone.home}


    {$Contacts.phone.cell}

    OUTPUT:
    555-222-9876


    zaphod@slartibartfast.com


    555-444-3333


    555-111-1234

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


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

    Доступ к элементу массива по его индексу

    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]}


    {$Contacts[1]}


    {* you can print arrays of arrays as well *}

    {$Contacts[2][0]}


    {$Contacts[2][1]}

    OUTPUT:
    555-222-9876


    zaphod@slartibartfast.com


    555-444-3333


    555-111-1234


    Доступ к свойствам объекта

    name: {$person->name}


    email: {$person->email}

    OUTPUT:
    name: Zaphod Beeblebrox


    email: zaphod@slartibartfast.com

    Переменные файлов конфигурации


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

    foo.conf:

    pageTitle = "This is mine"

    bodyBgColor = "#eeeeee"

    tableBorderSize = "3"

    tableBgColor = "#bbbbbb"

    rowBgColor = "#cccccc"

    index.tpl:

    {config_load file="foo.conf"}



















    FirstLastAddress














    FirstLastAddress














    FirstLastAddress
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта