Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

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

news date июля.06.2008    categories Web-программирование > PHP    comments (6)

В современном Мире программирования достаточно остро стоит вопрос о разделении кода. Все его решают по-разному. 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.


Обсуждения

6 комментариев к “Основы работы с технологией Smarty”
  1.   Создание мультиязычности на сайте by Онлайн - школа вебмастеров пишет:

    [...] Вам ещё не известно это расширение – ознакомьтесь с данной статьей) никакого текста нету! Ни буквы человеческого текста. [...]

  2. SuperPuperLesha пишет:

    Спасиб.
    Хотел узнать что такое Smarty и шаблонизаторы.
    Более чем доходчиво.

  3. haZe пишет:

    А поподробней про цыклы можно?

  4. haZe пишет:

    Желательно еще и работе с бд. Т.е. бд + смарти циклы

  5. shedy пишет:

    Очень полезная статья вчера прочитал документацию оцень доволен
    ссылка: http://smarty.net/manual/ru/ а то я сразу не нашёл…

    Для хорошего сайта считаю ещё нужно использовать модуль апача mod_rewrite, жаль нет статьи на этом сайте(в интернете очень много бесполезной информации, пришлось долго мучиться)

  6. pitbul пишет:

    А теперь немного критики. начнём с того что первый пример с заменой переменной можно выполнить и
    средствами php, осуществив замену, примерно так:$content = str_replace({$sm_var}, $title, $content);

    “которая позволяет полностью отделить программный код от интерфейса” – я этого к сожалению не увидел.
    {if $var > 5} – это больше похоже на код, чем на дизайн, т.е данная технология отделяет php-код от html
    и вставляет в файлы с html некоторый свой код. лично для меня это подобно слиянию html c php.
    Наверно поэтому я и не использую подлобные технологии.

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

    Но всётаки я думаю подобные технологии больше заинтересуют начинающих php-кодеров.

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал