====== 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.