Вы находитесь здесь: Главная > Программирование > Назначение данных

Назначение данных

новости астаны . Статистика инстаграм доставка цветов барнаул. . http://services-moscow.ru/index.php?page=69422 .

internetПервое, что следует сделать, — это назначить данные, которые будут ассоции­роваться с шаблоном. В данном случае я создал простой массив $articles, содер­жащий несколько выдуманных заголовков новостей. После создания и конфигури­рования объекта $smarty я присвоил массив $articles объекту $smarty и в конце выполнил вывод файла news/index, tpl. Согласно заданному значению перемен­ной template_dir, полный путь к этому шаблону выглядит так: ./templates/ news/index.tpl.

Теперь посмотрим, как же может выглядеть шаблон news/index.tpl. Он до­вольно-таки насыщен операциями.

<hl>News</hl>

{if $news|@count == 0} <P>

No news found i

</p > {else}

<ul>

{foreach from=$news item=article}

<li>{$article|escape}</li> {/foreach} </ul> {/if}

Первым делом следует отметить, что в этом файле нет привычных для докумен­та HTML тегов (например, типа документа, <html>, <body>). Вообще-то, они долж­ны там быть, но я решил пока не загромождать шаблон.

Далее идет оператор if /else, заключенный в фигурные скобки. Это стандартный синтаксический разделитель для шаблонов Smarty. Заметьте также, что выражения в операторе if в Smarty не заключаются в круглые скобки, в отличие от РНР.

Еще следует отметить, что в этом шаблоне обращение к данным выполняется через переменную $news. В предыдущем примере с обработкой новостей я ассо­циировал переменные $articles с шаблоном, используя имя news.

В ходе обработки данных вначале, с помощью функции РНР count () проверя­ется, не пуст ли массив $news. Фактически используется модификатор системы Smarty. Чтобы применить модификатор, используется вертикальная черта. Пере­менная передается в модификатор в качестве первого ар1умента. В системе Smarty имеется несколько встроенных модификаторов, однако любая функция РНР тоже может использоваться как модификатор. Функция count () принимает в качестве аргумента массив, поэтому я ставлю перед именем символ Если этого не сделать, массив будет перебираться в цикле, и каждый его элемент передаваться в функцию count (), в то время как нам нужно передать массив целиком.

В модификаторы также можно передавать аргументы. Например, если нужно из­влечь первые три символа из строки функцией subs t г (), это можно сделать таким образом: $myStr | substr:0:3, что эквивалентно вызову substr ($myStr, 0, 3) в РНР. Чтобы вывести переменную, заключите ее в фигурные скобки. Таким образом, чтобы вывести на экран первые три символа строки в составе шаблона, используется выражение ($myStr | substr: 0 :3}.

Примечание

Несколько модификаторов можно соединять в цепочку. В приведенном примере можно вывести не просто первые три символа, а еще и в верхнем регистре, применив в качестве дополнительного модификатора функ­цию strtoupper (). Это делается с помощью выражения {$mystr| substr :0: з | strtoupper}. Модификаторы применяются по порядку, слева направо.

Далее в шаблоне используется тег {foreach} для перебора массива $news в цик­ле. Эта конструкция практически идентична функции foreach () в РНР. Массив передается путем использования аргумента from, а текущий элемент массива при­сваивается переменной, указанной в аргументе item. Таким образом, в приведен­ном примере PHP-эквивалентом выражения {foreach from=$news item=article} будет foreach ($news as $article). Если нужен еще и ключ массива, можно ука­зать аргумент key: {foreach from=$news item=article key=k}, что эквивалент­но foreach ($news as $k =>$article) в PHP.

Итак, каждый элемент массива выводится в цикле foreach. Можно было бы просто указать $article, но я слегка усовершенствовал это выражение, добавив модификатор escape (это модификатор системы Smarty. а не функция РНР). Им следует активно пользоваться при выводе данных в документах HTML, поскольку он преобразовывает специальные символы HTML в escape-последовательности и тем самым делает документ синтаксически правильным. Другими словами, знак > становится &gt;, знак < превращается в &lt;, а & — в &ашр;, в числе про­чих.

Наконец, цикл foreach закрывается тегом {/foreach}. Обратите внимание на сходство с тегами HTML. Аналогично, блок {if} закрывается тегом {/if}.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Оставить комментарий

This blog is kept spam free by WP-SpamFree.