====== Laboratorium, PHP, Smarty ======
===== Ćwiczenie 1: Instalacja =====
1. Pobierz archiwum z odpowiednią wersją Smarty: http://www.smarty.net/download, bezpośredni link: https://github.com/smarty-php/smarty/archive/v3.1.34.tar.gz albo https://github.com/smarty-php/smarty/archive/v3.1.34.zip
2. Rozpakuj archiwum w swoim domowym katalogu w wybranym podkatalogu w ''public_html'' np: ''~/public_html/smarty'' (''~'' oznacza katalog domowy).
Podkatalog ten będzie dalej nazywany //roboczym//.
Przy rozpakowywaniu powstanie katalog zawierający Smarty np.: ''smarty-3.1.34'', zwany dalej katalogiem //smarty//.
Upewnij się, że rozpakowane pliki i katalogi są dostępne dla serwera WWW.
3. Utwórz odpowiednie katalogi wymagane przez Smarty w katalogu roboczym:
cache/
configs/
templates/
templates_c/
Nadaj im odpowiednie prawa dostępu tak, aby serwer WWW mógł:
- czytać z ''configs'', ''templates'',
- czytać i pisać w ''templates_c'', ''cache''.
4. Przetestuj, czy instalacja działa poprawnie.
Utwórz skrypt ''test.php'', który przetestuje Twoją instalację Smarty:
testInstall();
?>
Uwaga, powyższy skrypt nie generuje poprawnego dokumentu (X)HTML! Co zrobić, żeby generował?
Uwaga, powyższy skrypt zakłada, że nazwą katalogu //smarty// jest ''Smarty-3.1.34''. Jeżeli nazwa ta jest inna należy odpowiednio zmienić wywołanie ''require()''.
===== Ćwiczenie 2: Model =====
Dostarczona jest struktura danych (np. pochodząca z odczytu z bazy danych) przechowująca informacje o flocie samochodów:
// dane: marka samochodu, kolor, nr rej., przebieg, stan techniczny
$dane = array(
array('VW Passat','srebrny', 'DW5789', 98000, 'dobry'),
array('Syrena','żółty', 'WA4389', 60000, 'zły'),
array('Ford Focus','czarny', 'KR1243', 21000, 'dobry'),
array('Honda Civic','zielony', 'KR9834', 8000, 'dobry')
);
Napisz program w PHP implementujący model (np. ''auto.php''), który umożliwi wyświetlanie w/w informacji w dwóch postaciach reprezentowanych przez osobne widoki ''tab.tpl'' oraz ''form.tpl'', tj.:
- użyje powyższych danych,
- zdefiniuje zmienną (atrybut) smarty o nazwie ''samochod'' przekazującą w/w dane (wszystkie dane!),
- w zależności od przekazanego metodą GET parametru o nazwie ''tab'',
- jeżeli parametr jest przekazany (tj. ''.../auto.php?tab'') uruchomi szablon ''tab.tpl'',
- w przeciwnym wypadku (tj. ''.../auto.php'') szablon ''form.tpl''.
===== Ćwiczenie 3: Widoki =====
Zaprogramuj dwa widoki w oparciu o szablony: ''tab.tpl'' oraz ''form.tpl''.
Oba szablony używają zmiennej (atrybutu) ''samochod'' i prezentują te same informacje w inny sposób.
Szablon ''tab.tpl'' powinien wyświetlać dane o samochdach w postaci tabeli, tak aby
marka samochodu musi być pisana dużymi literami (zdefiniuj to odpowienio w szablonie).
Szablon ''form.tpl'' powinien generować formularz zawierający:
- listę jednokrotnego wyboru z numerem rejestracyjnym,
- przycisk //wyślij//,
- na początku formularza powinna znajdować się aktualna data.
===== Ćwiczenie 4 (nadobowiązkowe, dla zainteresowanych): Dodatkowe widoki =====
Zaimplementuj szablon ''tabcsv.tpl'' podobny do ''tab.tpl'', ale udostępniający dane w innej formie np. CSV.
Szablon będzie użyty gdy parametr ''tab'' będzie mieć wartość ''csv'', czyli:
- jeżeli parametr jest przekazany (tj. ''.../auto.php?tab=csv'') uruchomi szablon ''tabcsv.tpl'',
- jeżeli parametr jest przekazany (tj. ''.../auto.php?tab'') uruchomi szablon ''tab.tpl'',
- w przeciwnym wypadku (tj. ''.../auto.php'') szablon ''form.tpl''.
W ten sposób dane będą dostępne zarówno jako dokument HTML jak również w postaci łatwej do automatycznego przetwarzania celem integracji z innymi systemami.