Пожалуй, это самый важный первый шаг, который стоит сделать. Для этого несколько модифицируем index.php, выделив из него разметку в отдельный файл /templates/feedback.html.
WACT предоставляет мощные средства для отделения презентационной и бизнес логики. Помимо гибкой шаблонной системы в WACT присутствуют также инструменты для абстрагирования работы с БД. Т.к. эти инструменты очень гибко интегрируюся с шаблонной системой, имеет смысл остановить на них выбор.
WACT требует наличие config.ini файла, в котором описываются глобальные конфигурационные настройки приложения. Перенесем данные из db.php в config.ini.
Имеет смысл также пользоваться в тесте средствами WACT для работы с БД. Как можно видеть, вызов DBC :: execute('DELETE FROM feedback') - пришел на смену жесткой привязке к mysql_ функциям.
Все готово к тому, чтобы полностью отделить бизнес логику от презентационной. Начинаем с index.php:
<?phpob_start();
require_once(dirname(__FILE__) . '/external/wact/framework/common.inc.php');
require_once(WACT_ROOT . '/db/db.inc.php');
require_once(WACT_ROOT . '/template/template.inc.php');
function &getList(&$pager){return DBC::NewPagedRecordSet('SELECT * FROM feedback ORDER BY time DESC', $pager);
}function insertFeedback($arr){$dataspace = new DataSpace();
$dataspace->import($arr);
$record =& DBC::NewRecord($dataspace);
return$record->insert('feedback', array('name', 'email', 'message', 'time'));
}if(isset($_POST['submit'])){
insertFeedback(array('name' => $_POST['name'],
'email' => $_POST['email'],
'message' => $_POST['message'],
'time' => time()));
}$page = new Template('/feedback.html');
$pager =& $page->getChild('pager');
$feedback =& $page->findChild('feedback');
$feedback->registerDataSet(getList($pager));
$page->display();
ob_end_flush();
?>
WACT ищет по-умолчанию шаблоны в директории /templates/source, модифицируем и перенесем feedback.html.
<html><head><metahttp-equiv="Content-Type"content="text/html; charset=windows-1251"><linkrel=stylesheet type='text/css'href='styles/main.css'><scriptlanguage="JavaScript"type="text/javascript"src="js/form.js"></script></head><body><tablewidth="100%"style="height:100%"border="0"cellpadding="0"cellspacing="0"><tr><tdwidth="10%"style="background-color:#7F1A22"></td><tdwidth="90%"style="padding:5px 10px 5px 10px"valign="top"><h1>Обратная связь</h1><p>
Если у вас есть пожелания или вопросы к сотрудникам нашей компании,<br>
пожалуйста, заполните поля формы.<br></p><formaction="index.php"method="post"onsubmit="return submit_form(this);"><table><tr><tdalign="right">
Ваше имя:
</td><td><inputname="name"value=""type="text"></td></tr><tr><tdalign="right">
Email:
</td><td><inputname="email"value=""type="text"></td></tr><tr><tdalign="right">
Текст вопроса:
</td><td><textareaname="message"cols="50"rows="4"></textarea></td></tr><tr><td></td><td><inputvalue="Отправить"name="submit"type="submit"></td></tr></table></form><list:LIST id="feedback"><page:navigator id="pager" items="3">
Страница: {$PageNumber} из {$TotalPages}
<page:first><<</page:first><page:prev><</page:prev><page:list><page:number><page:elipses>...</page:elipses><page:separator></page:separator></page:list><page:next>></page:next><page:last>>></page:last></page:navigator><list:ITEM><hr><b>Автор:</b><ahref="mailto:{$email}">{$name}</a><br><b>Сообщение:</b> {$message}<br><b>Время:</b> {$time|date:"H:i:s m/d/Y"}<br></list:ITEM></list:LIST></td></tr></table></body></html>
WACT предоставляет набор компонентов, позволяющих заметно облегчить жизнь верстальщика. При помощи <list:LIST> компонента организуется итерация по сообщениям в шаблоне. <page:navigator> компонент берет полностью на себя всю рутину по организации и выводу пейджера. При этом содержимое index.php и feedback.html заметно упростилось и приобрело более логический вид.
Конечно, мы сделали очень много измненений, но выполняющиеся функциональные тесты позволили нам неустанно держать руку на пульсе разработки.
<a href=http://kvartira-na-sutki-minsk.ru/>Снять однокомнатную квартиру на сутки</a> , ZTKYZYZZZZKY, <a href="http://kvartira-na-sutki-minsk.ru/">Аренда квартиры на сутки Минск</a>
2012-02-15 17:35:39
AtraulseTrerge
<a href=http://kvartira-na-sutki-minsk.ru/>Квартира на сутки в Минске</a> , ZTKYZYZZZZKY, <a href="http://kvartira-na-sutki-minsk.ru/">Аренда квартиры на сутки Минск</a>
<a href=http://www.fotele-obrotowe.com.pl>krzesła</a> lub <a href=http://www.fotele-obrotowe.com.pl>krzesła</a> obrotowe sa niezbednym elementem wyposazenia wszelkiego biura. Dzieki mechanizmowi obrotowemu ulatwiony jest dostep do urzadzen biurowych. Waznym detalem oprzyrzadowania wszystkiego <a href=http://www.fotele-obrotowe.com.pl>Krzesla</a> lub <a href=http://www.fotele-obrotowe.com.pl>Krzesla</a> obrotowego jest wygodne profilowane siedzisko i oparcie. Krzesla obrotowe sa skonstruowane z rуznego typu surowcуw. Waznym szczegуlem kazdego krzesla jest jego rуwnowaga, ktуra zapewniaja nogi wyposazone w kуlka z kauczuku. Krzeslo musi miec regulowana wysokosc oparcia i siedzenia. Krzesla sa dostepne w wielorakich przedzialach cenowych, ich cena jest uzalezniona od gatunku pуlproduktu wykonczeniowego. Ekskluzywnym artykulem sa <a href=http://www.fotele-obrotowe.com.pl>Fotele</a> lub <a href=http://www.fotele-obrotowe.com.pl>fotele</a> obrotowe z wysokimi oparciami wykonczone skуra naturalna w rуznorodnych odcieniach. Krzesla i fotele obrotowe dobrej jakosci przyczyniaja sie do wygodnej i efektywnej pracy biurowej. Pozwala to na unikniecie problemуw z kregoslupem i przyczynia sie do zachowania wlasciwej pozycji ciala. Zasadniczym detalem kazdego krzesla i fotela obrotowego jest blokada oparcia ktуra pozwala na utrzymanie poprawnej pozycji co gwarantuje wygode przy pracy przez dlugie godziny. Dysponuja tez funkcje sposobu relaksu, dzieki ktуrym mozna odpoczac i sie zrelaksowac nie wychodzac z biura. Fotele sa dostepne w wielorakich rozmiarach: male, srednie (dla wiekszosci ludzi) i duze. Kazdy moze odszukac cos dla siebie. Aby fotele i krzesla sprawowaly swoje role musza byc wygodne, ergonomiczne, wykonane z wysokiej jakosci pуlproduktуw, z dostosowywanym oparciem, podlokietnikami i podglуwkiem. Kazde krzeslo i fotel powinien byc bezproblemowy w obsludze.