Дата: декабря 15, 2009
Категория: PHP
Теги: ,  

Основы работы с технологией Smarty

В современном Мире программирования достаточно остро стоит вопрос о разделении кода. Все его решают по-разному. Microsoft ввел на вооружение разработчиков новую технологию XAML, которая позволяет полностью отделить программный код от интерфейса. Это позволило дизайнерам спокойно проектировать интерфейс приложений, полностью отделенный от кода, а так же с легкостью его менять впоследствии.

В Интернете редко можно встретить серьёзный сайт, в котором php код и код представления (html) были бы слиты воедино. Грамотный код – это код, в котором отделены «мухи от котлет». Это код, в котором отдельно идут php-файлы, обрабатывающие информацию, работающие с Базой Данных и пр., и отдельно файлы-шаблоны – фактически, html-файлы, которые отвечают за представление данных на странице. Для такой структуры кода нам потребуется технология Smarty. О ней и пойдет речь в этой статье.

Smarty – это компилирующий обработчик шаблонов для PHP. Достаточно сложное и непонятное определение. Попробуем разобраться в нем.

В первую очередь, Smarty предоставляет возможность создания так называемых шаблонов (templates). Smarty-шаблон – это файл с расширением *.tpl. Внутри этого файла в самом простом варианте реализации идет html код, задающий внешний вид страницы. Отличие от обычного html файла в том, что мы можем в нашем шаблоне использовать smarty-переменные, условия, циклы, подключать другие файлы и использовать множество smarty-функций! Вам наверняка уже захотелось попробовать это все в деле? Если да – то займемся установкой smarty.

Первое, что надо сделать – скачать Smarty. Здесь дана подробная инструкция по установке и настройки Smarty. Теперь пора во всем разобраться.

Итак, у нас есть некоторый php скрипт. Допустим, мы объявили в нем переменную $title.

$title = “Первая Smarty переменная”;

Далее напишем конструкцию, которая будет передавать эту переменную в наш шаблон (назовем его test.tpl). Будем считать, что Вы уже создали новый smarty-объект ($sm, например).

$sm->assign(”sm_var”, $title);

$smarty->display(’test.tpl’);

В первой строчке мы создаем smarty-переменную sm_var и присваиваем ей значение нашей переменной $title. Второй строчкой мы задаем наш темплейт-смарти файл, который будет отображен и внутри которого будет описана наша переменная. Приведем самый простой код этого шаблона.

<html>

<head>

<title>{$sm_var}</title>

</head>

<body>

Тестовая страница первого шаблона на SMARTY.

</body>

</html>

Как мы можем понять, для того, чтобы обратиться в шаблоне к переменной, которая была передана php скриптом, необходимо написать {$name} где $name – имя переменной, которое мы описали в php, при передаче в шаблон.

Как я уже писал, в Smarty существует возможность анализировать полученные данные. Рассмотрим пример.

{if $var > 5}

Переменная, полученная шаблоном больше 5.

{else}

Переменная, полученная шаблоном меньше или равна 5.

{/if}

Вполне логичен вопрос: «Как работать с массивами данных?». Так же просто, как и с переменными. Для этого в smarty предусмотрены циклические конструкции. Предположим, мы передали в шаблон массив ассоциативный массив $users, содержащий выборку пользовательских данных из Базы Данных. Для его вывода в шаблоне нам потребуется следующая конструкция.

{foreach from=$users item=u name=user_cycl}

{$u.user_id} – {$u.user_login} – {$u.user_password}

{/foreach}

User_id, user_login и user_password – соответствующие элементы массива (поля базы данных).

Ещё одной важной особенностью Smarty является возможность подключения файлов. Например, Вы хотите вынести меню в отдельный файл, чтобы подключать его там, где необходимо. Делается это следующим образом:

{include file=”menu.tpl”}

Для того, чтобы описать JavaScript функцию в шаблоне, необходимо обрамить её блоком {literal}…{/literal}.

{literal}

<script type=”text/javascript”>

function test()

{

alert(“Hello!”);

}

</script>

{/literal}

Наконец, отмечу, что существует специальная зарезервированная переменная {$smarty}, которая позволяет обращаться к переменным окружения и запроса. Приведем примеры.

  1. {$smarty.get.some_var} – принимает значение переменной some_var переданной методом GET.
  2. {$smarty.post.some_var2} – принимает значение переменной some_var2 переданной из формы методом POST.
  3. {$smarty.cookies.some_var3} – получает значение COOKIE переменной some_var3.
  4. {$smarty.session.some_var4} – получает значение сессионной переменной some_var4.

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

Написать ответ

 Имя

 Mail

 Сайт

[Имя и Mail обязательны для заполнения. Mail не будет опубликован.]


 9fce13c8-2714-4603-b8e7-33be6c785d58