Kompozycja Proceduralna



Podobne dokumenty
I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

PHP: bloki kodu, tablice, obiekty i formularze

L eszek Sewastianowicz P odstawy systemu szablonów Smarty 1

I.Wojnicki, Tech.Inter.

Laboratorium 6 Tworzenie bloga w Zend Framework

Smarty PHP. Leksykon kieszonkowy

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

media Blitz wydajne sytemy szablonów

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Funkcje i instrukcje języka JavaScript

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

SSK - Techniki Internetowe

Laboratorium 1 Wprowadzenie do PHP

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Języki skryptowe w programie Plans

Laboratorium 7 Blog: dodawanie i edycja wpisów

MVC w praktyce tworzymy system artykułów. cz. 2

Zaawansowane aplikacje internetowe

Bazy Danych i Usługi Sieciowe

Cw.12 JAVAScript w dokumentach HTML

System operacyjny Linux

Podstawy JavaScript ćwiczenia

Zajęcia 4 - Wprowadzenie do Javascript

Umieszczanie kodu. kod skryptu

Quiz Aplikacja internetowa

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Instalacja i uruchomienie Na stronie domowej projektu Smarty znajdziemy między innymi dokumentację oraz najnowszą wersję oprogramowania.

Projektowani Systemów Inf.

Specyfikacja implementacyjna aplikacji serwerowej

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Bazy danych i strony WWW

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

XML extensible Markup Language. część 5

Dokumentacja WebMaster ver 1.0

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

HTML (HyperText Markup Language) hipertekstowy język znaczników

Imię, nazwisko i tytuł/stopień KOORDYNATORA (-ÓW) kursu/przedmiotu zatwierdzającego protokoły w systemie USOS Dr Adam Naumowicz

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

I. Dlaczego standardy kodowania mailingów są istotne?

KURSY PROGRAMOWANIA DLA DZIECI

JAVAScript w dokumentach HTML (2)

Materiały do laboratorium MS ACCESS BASIC

Języki programowania wysokiego poziomu. PHP cz.2.

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Podstawy technologii WWW

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Aplikacje WWW - laboratorium

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Dokumentacja Skryptu Mapy ver.1.1

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Tworzenie Stron Internetowych. odcinek 9

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

KURSY PROGRAMOWANIA DLA DZIECI

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

2 Podstawy tworzenia stron internetowych

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Tomasz Grześ. Systemy zarządzania treścią, cz. II

Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny

Składowane procedury i funkcje

Michał Bielecki, KNI 'BIOS'

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

CZYM JEST JAVASCRIPT?

Wprowadzenie do Internetu Zajęcia 5

Języki programowania wysokiego poziomu. Ćwiczenia

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Należy ściągnąć oprogramowanie Apache na platformę

Instrukcje cykliczne (pętle) WHILE...END WHILE

Aplikacje WWW - laboratorium

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: Tablice w PHP 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA

Oczywiście plik musi mieć rozszerzenie *.php

Aplikacje WWW - laboratorium

Tworzenie Stron Internetowych. odcinek 5

XML extensible Markup Language. część 5

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Dokumentacja imapliteapi

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Podstawy programowania skrót z wykładów:

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Tabele. Przykład 15a.htm. <HTML><HEAD><TITLE> Cennik</TITLE></HEAD><BODY><H3>Cennik</H3> <TABLE BORDER="1"> <TR>

Aplikacje WWW - laboratorium

Szablon główny (plik guestbook.php) będzie miał postać:

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Transkrypt:

Kompozycja Proceduralna Temat 11: Mechanizm szablonów stron dynamicznych na przykładzie PHP Piotr Habela Polsko-Japońska Wyższa Szkoła Technik Komputerowych 1

Plan prezentacji Role autorów w tworzeniu aplikacji WWW Postulat separacji logiki aplikacyjnej Koncepcja silnika szablonów Smarty Smarty objaśnienie najważniejszych poleceń i przykłady Zadania do przećwiczenia / praca domowa 2

Motywy stosowania silnika szablonów Główny cel = oddzielenie logiki aplikacyjnej od prezentacji: Skuteczniejsze wprowadzanie zmian Klarowny podział zadań i uprawnień pomiędzy programistę a projektanta Skrypt PHP oddzielony od layout-u strony: Oddzielne pliki i odrębny język: Projektant nie popsuje kodu aplikacyjnego Projektant nie naruszy reguł bezpieczeństwa Programista nie naruszy projektu wizualnego strony Pośrednictwo silnika szablonów pozwala czytelniej komunikować błędy w projekcie szablonu Uproszczona składnia wyświetlania dynamicznej treści 3

Wzorzec Model-View-Controller 3 selekcjonuje Kontroler 1 * 1 Widok dostarczaparametry4 * czyta4 Model 3 aktualizuje Widok z założenia bezstanowy. Model zorientowany na dane. Kontroler największa swoboda doboru rozwiązań. Możliwość dekompozycji: 1 centralny i szereg specjalizowanych. 4

Silnik szablonów Smarty scenariusz działania Programista tworzy bazową stronę PHP: Zawiera zwykły kod PHP i ma rozszerzenie.php To właśnie ta strona będzie wywoływana przez klienta Strona ta wywołuje klasę Smarty Przekazuje do niej dynamiczne parametry Wydaje polecenie wyświetlenia ich wskazując szablon w pliku.tpl Projektant projektuje szablon.tpl posługując się HTMLem i konstrukcjami języka Smarty Przygotowuje w nim miejsce na ww. parametry Szablony mogą znajdować się poza drzewem katalogów WWW Smarty łączy ze sobą stronę bazową i szablon, generując z nich jedną stronę zbudowaną z czystego PHP 5

Prosty przykład strona bazowa PHP <?php include('smarty.class.php'); // importujemy silnik szablonów Rutynowe $smarty = new Smarty; // inicjujemy obiekt silnika // Określamy parametry konfiguracyjne $smarty->template_dir = 'tpl'; // to nasz wybór podajemy nasz // podkatalog na szablony $smarty->compile_dir = 'E:\Smarty\templates_c'; // o tych ustawieniach $smarty->cache_dir = 'E:\Smarty\cache'; // zadecydował administrator Tu logika naszej strony $smarty->assign('nazwisko', 'Jan Kowalski' ); $smarty->assign('adres', 'Klewki 233'); // przekazujemy parametry // projektant nie musi wiedzieć, jak je pobraliśmy czy wyliczyliśmy $smarty->display('szablon1.tpl'); // wyświetlamy stronę wg szablonu // szablon1.tpl?> Rutynowe 6

Prosty przykład szablon Smarty-ego <html> <head> <title> Dane użytkownika </title> </head> <body> Podsumowanie rejestracji: <p> Imię i nazwisko: {$nazwisko} <br /> </body> </html> Adres: {$adres} <br /> </p> 7

Kompilacja strony bazowej i szablonu Powstaje automatycznie <html> <head><title>dane użytkownika</title></head> <body> Podsumowanie rejestracji: <p>imie i nazwisko: <?php echo _tpl_vars['nazwisko'];?> <br /> Adres: <?php echo _tpl_vars['adres'];?> <br /> </p> </body> </html> 8

Konstrukcje języka Smarty 9

Uproszczone wypisywanie składników dynamicznych Zmienne: Zamiast <?echo $zmienna;?> Stosuje: { $zmienna } Modyfikatory zmiennych: Kapitalizacja: {$nazwisko capitalize} Podmiana znaków specjalnych: {$address escape} Pobieranie i formatowanie daty: {$smarty.now date_format:"%y-%m-%d"} Funkcje generujące HTML np. obrazy: Zamiast: <img src= plik.jpg border= 0 width= 240 height= 160 /> Stosuje: {html_image file= plik.jpg } 10

Wartości domyślne dla zmiennych Określają, co umieścić na stronie, gdy brak oczekiwanej zmiennej Np. {$title default:"no title"} 11

Agregacja szablonów Chodzi o wołanie wstawienia szablonu we wnętrzu innego szablonu Można też przekazywać parametry Np. szablon główny: {include file="head.tpl" tytul="tytul strony" } <h1>naglowek z szablonu</h1> {include file="foot.tpl"} Szablon nagłówka: <http> <head> <title>{$tytul capitalize default:"bez tytulu"}</title> Szablon stopki: </body> </html> </head> <body> 12

Obsługa tablic przekazanie do funkcji HTML Często dane z aplikacji są wielowartościowe występują jako tablica w PHP. Np. $k = array('pl', 'LT', 'CZ', 'DE', 'RU'); $n = array('polska','litwa','czechy','niemcy','rosja'); Przekazujemy je do szablonu: $smarty->assign('kody', $k); $smarty->assign('nazwy', $n); Szablon przykład użycia do budowy kontrolki select: <select name="kraj"> {html_options values="$kody" output="$nazwy" selected="pl"} </select> 13

Obsługa tablic instrukcja iteracyjna w Smarty-m Przekazana tablica jak wcześniej. $n = array('polska','litwa','czechy','niemcy','rosja'); $smarty->assign('nazwy', $n); Szablon: Konstruuje tabelę, przydziela kolory wierszy poleceniem CSS <table> {section name="numer" loop="$nazwy"} <tr bgcolor="{cycle values="#eeeeee,#dddddd"}"> <td>{$nazwy[numer]}</td> </tr> {/section} </table> section buduje pętlę iterującą po zmiennej podanej w loop z licznikiem podany w name Sprawdzenie rozmiaru tablicy: {$zmtablicowa @count} 14

Iterowanie po tablicach asocjacyjnych Stworzenie tablicy asocjacyjnej w PHP i przekazanie do szablonu: $kraje = array( array('kod' => 'PL', 'nazwa' => 'Polska'), array('kod' => 'LT', 'nazwa' => 'Litwa'), array('kod' => 'CZ', 'nazwa' => 'Czechy'), array('kod' => 'DE', 'nazwa' => 'Niemcy'), array('kod' => 'RU', 'nazwa' => 'Rosja')); Wyświetlenie z poziomu szablonu: <table> {section name="numer" loop="$kraje"} <tr bgcolor="{cycle values="#eeeeee,#dddddd"}"> <td>{$kraje[numer].kod}</td> <td>{$kraje[numer].nazwa}</td> </tr> {/section} </table> 15

Wyświetlanie danych z bazy danych Dane przybierają postać właśnie tablicy asocjacyjnej Zatem przetwarzanie w szablonie jak wyżej Inny jest tylko sposób uzyskania tablicy w PHP <?php require('smarty.class.php'); $smarty = new Smarty; $smarty->template_dir = 'tpl'; $smarty->compile_dir = 'E:\Smarty\templates_c'; $smarty->cache_dir = 'E:\Smarty\cache'; $baza = mysql_connect("localhost","sxxxx","sxxxx"); $wynik=mysql_select_db("sxxxx"); if(!$wynik){ echo "brak twojej bazy"; } $wynik=mysql_query("select * from posty") or die("błąd łączenia: ". mysql_error()); while($wiersz = mysql_fetch_array($wynik)){ $res[]=$wiersz; } mysql_close($baza); $smarty->assign('posty',$res); $smarty->display('wynik.tpl'); mysql_free_result($wynik);?> 16

Jak wyłączyć fragment szablonu z przetwarzania? Chodzi m.in. o to, by nawiasy klamrowe {} nie były traktowane jako znaczniki Smarty Są nam potrzebne np. w skryptach JavaScript czy w osadzonej definicji CSS {literal} <script type="text/javascript"> function myfunc() { alert('hello World!'); } </script> {/literal} Gdy wewnątrz takiego bloku potrzebujemy parametru możemy chwilowo opuścić tryb literal: {literal} <style type="text/css"> body { backgroun-color : {/literal} $kolor {literal} } </style>{/literal} 17

Własne pętle typu for Również oparte na poleceniu section Zamiast podania tablicy (wówczas powtórzeń tyle, ile wynosi jej rozmiar) zadajemy atrybutami limit oraz indeks startowy: {section name="myloop" start=0 loop=6} index={$smarty.section.myloop.index} {/section} // j.w. można odzyskać aktualny indeks Można też zmienić krok: {section name="myloop" start=0 loop=5 step=2} index={$smarty.section.myloop.index} {/section} // powyższe da 3 kroki: 0, 2 i 4 18

Pętla typu for-each Iteruje po zadanej tablicy. Określa atrybuty: from tablica, po której iteruje; item nazwa zmiennej, która iteruje po elementach key dla tablic asocjacyjnych wartość klucza name nazwa pętli dla ew. sprawdzania jej parametrów {foreach name="petlax" item="ksiazka" from=$ksiazki} {/foreach} {foreachelse} pozwala określić co pokazać, gdy kolekcja okaże się pusta Sprawdzenie własności pętli: {$smarty.section.nazwapętli.nazwawłasności} iteration numer aktualnego przebiegu first czy jest to pierwszy przebieg? last czy jest to ostatni przebieg? total łączna liczba przebiegów pętli 19

Zmienne pomocnicze. Dostęp do parametrów z formularza Tak deklarujemy zmienne szablonu. Możemy umieścić w nich dane z formularza: {assign var="get_foo" value=$smarty.get.foo} {assign var="get_bar" value=$smarty.get.bar} Tak możemy dokonać konkatenacji: {assign var="baz" value="$get_foo:$get_bar"} 20

Instrukcja warunkowa {if warunek} Jeśli spełniony {else} // opcjonalne {/if} Jeśli niespełniony 21

Źródła http://smarty.php.net/ http://smarty.php.net/manual/en/ 22

Zadania Wykorzystaj utworzoną wcześniej stronę formularza i zrealizuj jej przetwarzanie na stronie.php opartej na szablonie Smarty Przebuduj stronę wyświetlającą dane pobrane z bazy danych w tem sposób, aby przekazywała dane do szablonu Smarty W ramach szablonu zaaranżuj sposób prezentacji zestawienia danych Spróbuj wykorzystać instrukcję warunkową do zróżnicowania sposobu prezentacji niektórych wierszy 23