Laboratorium 6 Tworzenie bloga w Zend Framework



Podobne dokumenty
Laboratorium 7 Blog: dodawanie i edycja wpisów

Wprowadzenie do Doctrine ORM

Laboratorium 1 Wprowadzenie do PHP

Podstawy technologii WWW

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

INSTALACJA I KONFIGURACJA SERWERA PHP.

Bazy danych. dr Radosław Matusik. radmat

Aplikacje WWW - laboratorium

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Laboratorium 1: Szablon strony w HTML5

Facelets ViewHandler

Przykład integracji kalkulatora mbank RATY na platformie IAI

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Podstawy JavaScript ćwiczenia

Backend Administratora


Aplikacje WWW - laboratorium

Dokumentacja Skryptu Mapy ver.1.1

Podstawowe wykorzystanie Hibernate

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

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Wykład 1: HTML (XHTML) Michał Drabik

Poszczególne elementy serwisu można umieścić dla porządku w odpowiednio przemyślanym drzewie katalogów, i tak: -

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

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

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

Responsywne strony WWW

Bazy danych Karta pracy 1

Dzięki arkuszom zewnętrznym uzyskujemy centralne sterowanie wyglądem serwisu. Zewnętrzny arkusz stylów to plik tekstowy z rozszerzeniem css.

Podstawy (X)HTML i CSS

13. Konfiguracja proxy http, smtp, pop3, ftp, ssl

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

za pomocą: definiujemy:

Integracja z Facebook. Wersja 7.2.4

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Zdefiniowane style mogą określać układ treści na stronie i sposób jej formatowania np. kolor czcionki, pogrubienia, tło tabel, rysunków itp.

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Autor: Joanna Karwowska

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

plansoft.org Zmiany w Plansoft.org

JAK W NAGŁÓWKU STRONY LUB BLOGA

Tworzenie Stron Internetowych. odcinek 5

Aplikacje internetowe - laboratorium

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

KATEGORIE OBRAZKOWE REALIZACJA

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

Kompozycja Proceduralna

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Przykładowa integracja systemu Transferuj.pl

Technologie informacyjne lab. 4

Krok 1: Stylizowanie plakatu

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

STRONY INTERNETOWE mgr inż. Adrian Zapała

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Modele danych walidacja widoki zorientowane na model

REFERAT O PRACY DYPLOMOWEJ

GENERATOR OFERTY PDF DOKUMENTACJA UŻYTKOWA 1/20

Pierwsze kroki z Zend Framework (tytuł oryginału: Getting Started With Zend Framework)

System Obsługi Zleceń

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

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Marketing Automation:

Aplikacje WWW - laboratorium

CMS Admin instrukcja administratora

Aplikacje WWW - laboratorium

Instalacja i opis podstawowych funkcji programu Dev-C++

Wykład 2 TINT. XHTML tabele i ramki. Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Wprowadzenie do framework a Symfony

Katalog książek cz. 3: Web Service

Zdarzenia Zdarzenia onload i onunload

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Programowanie obiektowe

Bazy danych kwerendy (moduł 5) 1. Przekopiuj na dysk F:\ bazę M5KW.mdb z dysku wskazanego przez prowadzącego


Kurs HTML 4.01 TI 312[01]

Podstawy HTML i styli CSS. selektor {właściwość1: wartość1; właściwość2: wartość2}

Kurs WWW. Paweł Rajba.

Sierpień 2015 rozwiązanie plik: index.htlm

Jak ustawić cele kampanii?

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Aplikacje WWW - laboratorium

Dokumentacja techniczna CMSphere EASY na podstawie wdrożenia dla Gminy Wieliszew

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

Podstawy technologii WWW

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

PORADNIK KODOWANIA: CSS

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Odnośniki jeszcze do niedawna odróżniały strony WWW od wszystkich innych dokumentów elektronicznych. Możliwość deklarowania odnośników do innych

Manage Qulto database

0.1 Logowanie do serwisu

3. Silnik MVC Opis rozdziału Organizacja plików. Mini poradnik: Jak stworzyć grę via WWW.

Oczywiście występują także znaczniki, bez ich odpowiednika kończącego, np. <BR>

Aplikacje internetowe

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

Transkrypt:

Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy posłuży do kontroli dostępu do bloga. Pole grupa w tabeli blog_uzytkownicy zawierać będzie jedną z wartości: admin, user. Tabela blog_wpisy przechowywać będzie posty dodawane do bloga. Pole autor odnosić się będzie do indeksu użytkownika w tabeli blog_uzytkownicy. Pola: tytul, tresc i skrot zawierać będą odpowiednio: tytuł wpisu, właściwą treść oraz wersję skróconą (do wyświetlenia na stronie głównej z odnośnikiem Więcej.). Pola id w obu tabelach będą automatycznie inkrementowane. Tworzenie projektu 1. Stwórz w Netbeans nowy projekt PHP z obsługą Zend Framework, sprawdź działanie nowego projektu. Konfiguracja projektu Zmiana przestrzeni nazw 1. Otwórz w edytorze tekstu plik application.ini (znajduje się w katalogu zfblog/application/configs). 2. Znajdź linię: appnamespace = "Application" I zamień na: appnamespace = "Blog" Podanej przestrzeni nazw będziemy używać jako przedrostka nazw tworzonych klas. Pozwoli to na automatyczne ładowanie definicji klas przez Zend Framework. Strona 1 z 6

Konfiguracja dostępu do bazy danych 1. Skonfiguruj dostęp do bazy danych na końcu sekcji [production], przed sekcją [staging : production], dodaj następujące linie: resources.db.adapter = "pdo_sqlite" resources.db.params.dbname = APPLICATION_PATH "/../blog.db" Tworzenie modeli 1. Do dostępu do danych posłużą klasy dziedziczące z Zend_Db_Table. Utworzymy po jednej klasie dla każdej tabeli w bazie danych. 2. W katalogu application/models utwórz plik Wpisy.php. W nim umieść definicję klasy Blog_Model_Wpisy: <?php class Blog_Model_Wpisy extends Zend_Db_Table_Abstract { protected $_name = 'blog_wpisy'; Pole $_name zawiera nazwę tabeli w bazie danych, do której dostęp będziemy uzyskiwać za pomocą tworzonej klasy. 3. Uwaga! Nazwy tworzonych klas są istotne także wielkość liter oraz użyte podkreślenia. Trzymanie się ustalonej konwencji nazewnictwa pozwoli na automatyczne ładowanie klas. Autoloader na podstawie nazwy klasy Blog_Model_Wpisy będzie szukał jej definicji w katalogu application/models/, w pliku Wpisy.php. 4. W ten sam sposób utwórz model dla tabeli blog_uzytkownicy. Wyświetlanie postów na stronie głównej 1. Na stronie głównej naszego bloga umieścimy listę wszystkich wpisów, wyświetlając ich tytuły oraz skróty. 2. W kontrolerze IndexController, w akcji indexaction, umieścimy kod pobierający z modelu wszystkie wpisy. Do pobrania wszystkich rekordów z bazy służy metoda fetchall(): public function indexaction() { $mdl = new Blog_Model_Wpisy(); $wpisy = $mdl->fetchall(); $this->view->dane=$wpisy; Strona 2 z 6

Znaczenie powyższego kodu jest następujące: a. Tworzymy obiekt klasy Blog_Model_Wpisy obiekt ten pośredniczy w dostępie do tabeli wpisy. b. Pobieramy wszystkie rekordy z tabeli. c. Pobrane rekordy przekazujemy do widoku. 3. Przekazane do widoku rekordy musimy jeszcze wyświetlić. Przejdź do pliku z widokiem, index.phtml. 4. Przekazany zbiór rekordów można traktować jak tablicę obiektów. Można po niej iterować za pomocą pętli foreach. Każdy element tablicy zawiera pola odpowiadające kolumnom w tabeli bazy danych. Przykład użycia: <?php foreach($this->dane as $wpis) { echo $wpis->tytul;?> Zwróć uwagę na zależność pomiędzy przypisaniem danych do widoku w kontrolerze oraz dostępem do tych danych w widoku. Jeżeli w kontrolerze wykonaliśmy przypisanie: $this->view->dane = $wpisy; wówczas w widoku dostęp do danych mamy poprzez zmienną: $this->dane 5. Kompletny kod widoku wyświetlającego listę wpisów: <h1>zf Blog</h1> <?php foreach($this->dane as $wpis) { echo '<div class="wpis">'; echo '<h2>'. $wpis->tytul. '</h2>'; echo '<p>'. $wpis->skrot. '</p>'; echo '</div>';?> Wyświetlanie całej treści wpisu 1. Dodamy akcję pokaz powodującą wyświetlenie pełnej treści wybranego wpisu. Akcja będzie wywoływana po kliknięciu przez użytkownika linka Więcej pod skrótem wpisu na stronie głównej. 2. Akcja przyjmować będzie jeden parametr przekazany poprzez URL id wpisu, który należy wyświetlić. 3. Dodaj nową akcję wydając komendę: Strona 3 z 6

zf create action pokaz Index Spowoduje to dodanie nowej akcji pokazaction w kontrolerze IndexController, a także utworzenie odpowiedniego pliku widoku (pokaz.phtml). 4. W kodzie akcji wykonamy kolejno następujące czynności: a. Pobranie id wpisu z parametrów żądania metoda $this->getrequest()->getparam(). b. Stworzenie instancji modelu Blog_Model_Wpisy. c. Pobranie wpisu o podanym id metoda find(). d. Przekazanie pobranego wpisu do widoku. Kompletny kod akcji pokaz: public function pokazaction() { $id = $this->getrequest()->getparam('id'); $mdl = new Blog_Model_Wpisy(); $wpis = $mdl->find($id)->current(); $this->view->wpis = $wpis; Metoda find przyjmuje jako argument wartość klucza głównego w szukanym rekordzie (lub tablicę z listą kluczy głównych wielu szukanych rekordów). Zwrócić może kilka rekordów jeśli mamy pewność, że zwróci dokładnie jeden, pobieramy go metodą current(). 5. Uzupełnimy kod widoku index.phtml, tak by pod tytułem i skrótem wpisu pojawiał się link Więcej prowadzący do akcji pokaz. W pliku index.phtml, wewnątrz pętli wyświetlającej wpisy, dodaj następujący kod: $url = $this->baseurl(). '/index/pokaz/id/'. $wpis->id; echo '<p><a href="'. $url. '">Więcej...</a></p>'; Tak utworzony link będzie prowadził do akcji pokaz w kontrolerze index, przekazując jej jeden parametr o nazwie id i wartości równej polu id z wyświetlanego wpisu. Przykładowy link dla id=7: <a href="http://localhost/blog/public/index/pokaz/id/7">więcej...</a> Zadanie 1. Dodaj w widoku pokaz.phtml kod wyświetlający szczegóły wpisu (tytuł, data dodania, pełna treść). Strona 4 z 6

Layout strony 1. Włączymy obsługę Zend Layout mechanizmu pozwalającego na stworzenie szablonu, wewnątrz którego wyświetlane będą wszystkie widoki. 2. Z linii poleceń wydaj komendę: zf enable layout Spowoduje to: a. dodanie w pliku index.php kodu inicjalizującego Zend_Layout, b. dodanie w pliku konfiguracyjnym application.ini wpisu wskazującego na katalog szablonów, c. utworzenie głównego szablonu o nazwie layout.phtml. 3. Otwórz w edytorze plik application/layouts/scripts/layout.phtml, przyjrzyj się jego zawartości. Sprawdź działanie aplikacji. 4. Zmień kod szablonu na następujący: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>zf Blog</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl();?>/main.css"> </head> <body> <div id="page"> <div id="menu"> <a href="<?php echo $this->baseurl();?>">strona główna</a> <a href="">dodaj wpis</a> <a href="">zaloguj</a> </div> <div id="content"> <?php echo $this->layout()->content;?> </div> </div> </body> </html> Strona 5 z 6

5. Stwórz plik main.css, umieść go w katalogu public. Przykładowa zawartość pliku: body { background-color: #ffffd0; #page { background-color: white; margin: 0 auto; width: 640px; #menu { background-color: blue; text-align: center; #menu a { color: white; font-family: sans-serif;.wpis { border: thin dashed gray; Strona 6 z 6