Основы Smarty: переменные и модификаторы
Posted in: Простой пример системы шаблонов, By: admin, At: Август 25th, 2008
Теперь, когда Smarty успешно установлен на вашем сервере, давайте разберемся, как им пользоваться. Чтобы сделать это, рассмотрим вначале простую подстановку переменных, как мы это делали в сценарии QuickTemplate. В Smarty, как вы это можете видеть в тестовом шаблоне в листинге 7.7, переменные по умолчанию имеют форму {$variable_name}. Отмечу, что это способ представления переменных в Smarty по умолчанию. Скобки {) являются настраиваемыми посредством конфигурационных переменных Slef^delimiter и $right_delimiter, которые могут быть изменены. В любом случае переменные внутри этих разделителей должны состоять из символа $ с последующим именем. Правила, описывающие, какие символы допустимы в именах переменных Smarty — те же, что и в РНР. Как и РНР, имена переменных Smarty также чувствительны к регистру. Ниже представлен очень простой пример шаблона:
{* Очень простой шаблон *)
Здравствуйте! Благодарим за приобретение РНР Unleashed f$name)-.Здесь мы определили единственную переменную (Sname). Чтобы использовать этот шаблон, его нужно сохранить в каталоге templates. Хотя это и не является требованием, стандартной практикой является сохранения их в файлах с расширением .tpl, обозначающим файлы шаблонов. В данном случае предположим, что файл сохранен под именем simple. tpl. jfe
После того, как шаблон создан и сохранен, самрЁ время написать РНР-сценарий, который будет его использовать. Первый шаг при создании любого PHP-сценария, использующего Smarty — это включение и создание экземпляра класса Smarty, для чего нужно начать ваш сценарий со следующего фрагмента:
require(1Smarty.class.php'); $smarty = new Smarty 0;
Начиная с этого момента, вы можете работать с механизмом Smarty, обращаясь к созданной переменной — экземпляру класса Smarty с именем $smarty.
Всякий раз когда вы используете Smarty посредством включения и создания экземпляра этого класса, вы должны выполнить несколько шагов, чтобы ваша страница шаблонов была обработана. Первый шаг — всем переменным, исподсованным в шаблоне, должны быть выполнены присвоения в механизме Smarty. Чтобы сделать это, Smarty предусматривает функцию-член assign[). Эта функция принимает максимум два параметра, и в зависимости от того, как она вызывается, выполняется два различных действия.
Первый метод вызова assign () — передача строки в первом параметре и значения во втором. Когда функция вызывается в такой манере, Smarty присваивает переменной, переданной в первом параметре, значение, переданное во втором. В нашем случае, чтобы присвоить переменной Smarty ($name), вы должны сделать следующее:
$smarty->assign('name', 'John Coggeshall1);
Второй способ вызова функции assign () удобен для присвоения большого обьема данных. Этот метод предполагает передачу функции только ассоциативного массива. Ключи этого массива представляют имена переменных, а его значения — значения этих переменных. Например, если у вас в шаблоне есть переменные (Sfoo) и (Sbar), вы можете присвоить значения обоим переменным одним вызовом функции assign 0 , передав ей ассоциативный массив:
$smarty->assigri (array('foo' => 10, 'bar' => 'hello, world!'));
В этом случае переменной (Sfoo) присваивается значение 10, а переменной {$Ьэг} — строковое значение 'hello, world! '.
Хотя в данном случае в механизме Smarty мы используем массив для присвоения индивидуальных значений ($foo) и |$Ьах), целые массивы также могут быть присвоены в виде значений. Это делается в той же манере, что и присвоение любой дру-ой переменной, как показано в следующем примере, где переменной (Smyarray} присваивается массив чисел от 5 до 10:
$smarty->assign('myarray', array(5,б,7,8,9,10));
Хотя массивы Smarty ведут себя аналогично тому, как они ведут себя в РНР, доступ к их элементам из шаблона осуществляется иначе, чем к скалярным значениям. Когда вы имеете дело с целочисленными массивами, вроде предыдущего, использование их вн)трн шаблона выполняется так же, как и в РНР — присоединением соответствующего индекса в квадратных скобках. Таким образом, строка ($myarray [2] } ссылается на то же значение, на которое ссылается Smyarray [2] в РНР (в предположении, что оба экземпляра Smyarray — эквивалентные массивы). Однако когда вы работаете с ассоциативными массивами, функщ* массивов внутри Smarty действуют абсолютно иначе. Вместо указания соответствующего индекса в квадратных скобках (что было только что объяснено), к переменной массива добавляется имя ключа через точку. Это проиллюстрировано в листинге 7.9.
Leave a Reply