CMS Lab 08 Blog 1

background image

dr inż. Piotr Czapiewski

Systemy zarządzania treścią

Laboratorium 8

Laboratorium 8 – Tworzenie bloga w Zend Framework

Przygotowanie bazy danych

1.

Korzystając z lokalnego MySql utwórz użytkownika oraz bazę danych o nazwie

nazwisko_zfblog

, np.

kowalski_zfblog

2.

Utwórz trzy tabele –

grupy

,

uzytkownicy

oraz

wpisy

– o strukturze przedstawionej

poniżej.

Wszystkie pola

id

powinny być automatycznie inkrementowane (typ

integer

auto_increment

).


Tabele

grupy

i

uzytkownicy

posłużą do kontroli dostępu do bloga. Pole

grupa

w tabeli

uzytkownicy

zawierać będzie indeks z tabeli

grupy

(np. 1 dla grupy

Administratorzy

, 2

dla grupy

Autorzy

).


Tabela

wpisy

przechowywać będzie posty dodawane do bloga. Pole

autor

odnosić się

będzie do indeksu użytkownika w tabeli

uzytkownicy

. Pola:

tytul

,

tresc

i

skrot

zawierać będą odpowiednio: tytuł wpisu, właściwą treść oraz wersję skróconą wyświetlany
na stronie głównej z odnośnikiem

Więcej…

.

3.

Dodaj do bazy dane:

grupy: Administratorzy i Autorzy;

użytkownicy: admin – należący do grupy Administratorzy, user – należący do grupy
Autorzy;

wpisy: 2-3 przykładowe, krótkie posty.

Sprawdzenie konfiguracji środowiska PHP

1.

Sprawdź, czy narzędzie Zend Tool jest dostępne z linii poleceń – wydaj komendę:

zf show version

Jeśli wersja Zend Framework nie zostanie wyświetlona, przygotuj środowisko zgodnie z
instrukcją do ćwiczenia 7.

background image

dr inż. Piotr Czapiewski

Systemy zarządzania treścią

Laboratorium 8

Tworzenie projektu

1.

W linii poleceń przejdź do katalogu

WebServ/httpd

.

2.

Wydaj polecenie tworzenia nowego projektu:

zf create project zfblog

3.

Sprawdź działanie nowego projektu – w przeglądarce wejdź na adres:

http://localhost/zfblog/public/

Konfiguracja projektu

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.

3.

Skonfiguruj dostęp do bazy danych – na końcu sekcji

[production]

dodaj następujące

linie:

resources.db.adapter = "pdo_mysql"

resources.db.params.host = "localhost"

resources.db.params.username = "kowalski_zfblog"

resources.db.params.password = "hasło"

resources.db.params.dbname = "kowalski_zfblog"

resources.db.params.charset = "utf8"

Zmień nazwę użytkownika, hasło oraz nazwę bazy danych na właściwe.

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

{

background image

dr inż. Piotr Czapiewski

Systemy zarządzania treścią

Laboratorium 8

protected

$

_name

=

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

4.

W ten sam sposób utwórz modele dla tabel:

grupy

i

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 poprzez model służy
metoda

fetchAll()

:

public

function

indexAction() {

$mdl

=

new

Blog_Model_Wpisy();

$wpisy

=

$mdl

->fetchAll();

$this

->

view

->

dane

=

$wpisy

;

}

3.

Znaczenie powyższego kodu jest następujące:

a.

Tworzymy obiekt klasy

Blog_Model_Wpisy

– model ten pośredniczy w dostępie

do tabeli wpisy.

b.

Pobieramy wszystkie rekordy z tabeli.

c.

Pobrane rekordy przekazujemy do widoku.

4.

Przekazane do widoku rekordy musimy jeszcze wyświetlić. Przejdź do pliku z widokiem,

index.phtml

.

5.

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

;

}

?>

6.

Kompletny kod widoku wyświetlającego listę wpisów:

<h1>

ZF Blog

</h1>

background image

dr inż. Piotr Czapiewski

Systemy zarządzania treścią

Laboratorium 8

<?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

przyjmować będzie jeden parametr przekazany poprzez URL – id wpisu, który należy
wyświetlić.

2.

Dodawanie nowej akcji – z linii poleceń wydaj komendę:

zf create action pokaz Index

Spowoduje to dodanie nowej akcji

pokazAction

w kontrolerze

IndexController

, a

także utworzenie odpowiedniego pliku widoku (

pokaz.phtml

).

3.

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()

.

4.

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:

background image

dr inż. Piotr Czapiewski

Systemy zarządzania treścią

Laboratorium 8

$url

=

$this

->url(

array

(

'controller'

=>

'index'

,

'action'

=>

'pokaz'

))

.

'/id/'

.

$wpis

->

id

;

echo

'<p><a href="'

.

$url

.

'">Wi

ę

cej...</a></p>'

;

Powyższy kod spowoduje wyświetlenie linka postaci:

http://localhost/zfblog/public/index/pokaz/id/1

Zadanie

1.

Dodaj w widoku

pokaz.phtml

kod wyświetlający szczegóły wpisu (tytuł, data dodania,

pełna treść).

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>

background image

dr inż. Piotr Czapiewski

Systemy zarządzania treścią

Laboratorium 8

<div

id=

"content"

>

<?php

echo

$this

->layout()->

content

; ?>

</div>

</div>

</body>

</html>

Zadanie

1.

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;

}

2.

Dodaj reguły określające formatowanie tytułów postów i daty dodania. Zmodyfikuj arkusz
stylów tak, by twoja strona odróżniała się od innych.


Wyszukiwarka

Podobne podstrony:
CMS Lab 08 Blog 1
CMS Lab 04 Szablony
CMS Lab 01 Podstawy Joomla
CMS Lab 03 JoomlaPack
CMS Lab 07 Zend Framework
CMS Lab 01 Podstawy Joomla
lab 08
Lab 08
CMS Lab 06 Podstawy PHP
lab 08
air lab 08 id 53379 Nieznany (2)
lab 08 IIR
CMS Lab 05 Moduly
CMS Lab 04 Szablony
Lab 08
Lab 08
Lab 08 2011 2012

więcej podobnych podstron