|
Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Использование шаблонов в PHP
Решение задачи с помощью шаблонов Smarty
Теперь, после знакомства с основными конструкциями Smarty, мы можем попытаться решить задачу отображения списка документов. Шаблон списка будет выглядеть следующим образом:
{* Smarty template index.tpl *}
{config_load file="task.conf" }
<html>
<head><title>{#pageTitle#}</title>
</head>
<body>
<ol>
{section name=art loop=$title}
<li><a href="{$fulltext[art]}">
{$title[art]}</a>
({$author[art]})
<br> <p> {$abstract[art]}
{/section}
</ol>
</body>
</html>В файле конфигурации task.conf будем хранить название страницы и параметры для доступа к базе данных:
# глобальные переменные pageTitle = "List of documents" [Customer] pageTitle = "Список статей" [Database] host=localhost db=book user=nina pass=123
Скрипт ( index.php ), обрабатывающий написанный нами шаблон, может выглядеть таким образом:
<?
define("SMARTY_DIR","c:/users/nina/Smarty/libs/");
require(SMARTY_DIR."Smarty.class.php");
$smarty = new Smarty;
$smarty->template_dir = "c:/smarty_dirs/book/templates/";
$smarty->compile_dir = "c:/smarty_dirs/book/templates_c/";
$smarty->config_dir = "c:/smarty_dirs/book/configs/";
$smarty->cache_dir = "c:/smarty_dirs/book/cache/";
// вышеприведенный блок лучше вынести в отдельный файл
$smarty->config_load("task.conf","Database");
$host = $smarty->get_config_vars("host");
$user = $smarty->get_config_vars("user");
$pass = $smarty->get_config_vars("pass");
$db = $smarty->get_config_vars("db");
$conn = mysql_connect($host, $user, $pass) or die("Can't connect");
mysql_select_db($db);
$sql = "SELECT * FROM Articles";
$q = mysql_query($sql,$conn);
$num = mysql_num_rows($q);
for($i=0; $i<$num; $i++){
$title = mysql_result($q,$i,"title");
$author = mysql_result($q,$i,"author");
$abs = mysql_result($q,$i,"abstract");
$full = mysql_result($q,$i,"fulltext");
$smarty->append(array(
title => $title,
author => $author,
abstract => $abs,
fulltext => $full ));
}
$smarty->display("index.tpl");
?>
Листинг
15.12.
index.php
Как вы, скорее всего, заметили, программа получилась еще более громоздкой, чем в первых двух случаях, когда использовалась простая замена значений и шаблоны FastTemplate. Действительно, механизм Smarty гораздо более сложен, чем тот же FastTemplate, но зато и более функционален.
Заключение
Итак, в этой лекции было рассказано о том, что такое шаблоны и как их можно использовать при программировании web-приложений на языке PHP. Мы рассмотрели три способа решения задачи отображения сложного списка документов: с помощью функции регулярной замены, с помощью класса шаблонов FastTemplate и с помощью языка шаблонов Smarty. При этом мы познакомились с основными свойствами, методами и функциями классов FastTemplate и Smarty.
