Tworzenie, czytanie, aktualizowanie oraz usuwanie (CRUD, od ang. create, read, update, delete)
są czterema podstawowymi operacjami dla trwałych magazynów danych (ang. persistent storage). W naszej aplikacji
blogowej głównym zadaniem jest implementacja tych operacji CRUD zarówno dla wiadomości jak i komentarzy.
W części tej, będziemy używali narzędzia yiic
aby wykonać to zadanie. Proces ten
znany jest również jako scaffolding.
Otwórz okno poleceń i wykonaj następujące polecenia:
% /wwwroot/yii/framework/yiic shell /wwwroot/blog/index.php Yii Interactive Tool v1.0 Please type 'help' for help. Type 'exit' to quit. >> model User ...... >> model Post ...... >> model Tag ...... >> model Comment ...... >> crud Post ...... >> crud Comment ...... >> exit
Info: Część instalacji PHP może używać różnych plików
php.ini
dla parsera PHP wiersza poleceń (CLI). W rezultacie, podczas wykonywania powyższych poleceńyiic
, możesz spotkać się z błędami takimi jak
"YiiBase::include(PDO.php): failed to open stream..." czy też "...could not find driver". Sprawdź dokładnie twoją konfigurację CLI PHP poprzez wywołanie następującego polecenia:php -r "phpinfo();"Wynik powyższego polecenia pokaże, który plik
php.ini
jest używany i które rozszerzenia są załadowane. Jeśli nieprawidłowy plikphp.ini
jest w użyciu, możesz użyć następującego polecenia aby bezpośrednio określić poprawny plikphp.ini
, który powinien zostać użyty:php -c php.ini /wwwroot/yii/framework/yiic.php shell /wwwroot/blog/index.php
Powyższe polecenie wykonuje dwa zadania. Pierwsze, polecenie model
generuje plik klasy
model dla ja każdej z tabel bazy danych.
Drugie, polecenie crud
generuje kod potrzebny przez operacje CRUD dla modeli wiadomości
Post
i komentarza Comment
.
Możemy przetestować wygenerowany kod poprzez użycie następujących URLi
http://www.example.com/blog/index.php?r=post http://www.example.com/blog/index.php?r=comment
Zauważ, że funkcjonalności związane z wiadomościami oraz komentarzami zaimplementowane
w wygenerowanym kodzie są całkowicie niezależne od siebie. Ponadto podczas tworzenia wiadomości
czy też komentarza, musimy wprowadzić informacje takie jak ID autora authId
czy też czas utworzenia
createTime
, które w prawdziwej aplikacji powinny być ustawiane przez program. Nie przejmuj się,
poradzimy sobie z tymi problemami w następnym kroku milowym. Na chwilę obecną powinniśmy
być całkiem usatysfakcjonowani, gdyż prototyp zawiera już większość funkcjonalności,
które chcemy zaimplementować dla naszej aplikacji.
Aby przygotować się do następnego kroku, przypatrzmy sie plikom wygenerowanym
przez powyższe polecenia. Wszystkie pliki znajdują się w katalogu /wwwroot/blog/protected
.
Dla wygody pogrupowaliśmy je w pliki modelu,
pliki kontrolera oraz
pliki widoku:
pliki modelu:
models/User.php
zawiera klasę użytkownika user
, która dziedziczy z klasy CActiveRecord, którą można użyć aby uzyskać dostęp do tabeli bazy danych User
;models/Post.php
zawiera klasę wiadomości Post
, która dziedziczy z klasy CActiveRecord, którą można użyć aby uzyskać dostęp do tabeli bazy danych Post
;models/Tag.php
zawiera klasę otagowania Tag
, która dziedziczy z klasy CActiveRecord, którą można użyć aby uzyskać dostęp do tabeli bazy danych Tag
;models/Comment.php
zawiera klasę komentarza Comment
, która dziedziczy z klasy CActiveRecord, którą można użyć aby uzyskać dostęp do tabeli bazy danych Comment
;pliki kontrolera:
controllers/PostController.php
zawiera klasę PostController
, która jest kontrolerem odpowiedzialnym za wszystkie operacje CRUD na wiadomościach;controllers/CommentController.php
zawiera klasę CommentController
, która jest kontrolerem odpowiedzialnym za wszystkie operacje CRUD na komentarzach;pliki widoku:
views/post/create.php
jest plikiem widoku, który reprezentuje formularz HTML do tworzenia nowej wiadomości;views/post/update.php
jest plikiem widoku, który reprezentuje formularz HTML do aktualizowania istniejącej wiadomości;views/post/show.php
jest plikiem widoku, który wyświetla szczegółowe informacje o wiadomości;views/post/list.php
jest plikiem widoku, który wyświetla listę wiadomości;views/post/admin.php
jest plikiem widoku, który wyświetla wiadomości w tabelce wraz z poleceniami administracyjnymi;views/post/_form.php
jest plikiem widoku częściowego, który wyświetla formularz HTML służący zbieraniu informacji o wiadomości.
Jest on osadzony w widokach create
oraz update
.W celu lepszego zrozumienia jak powyższe pliki są używane, pokażemy przepływ zadań w aplikacji, które występują w naszej aplikacji podczas wyświetlani listy wiadomości:
PostController
i wywołuje go;PostController
wykonuje żądaną akcję list
poprzez wywołanie swojej metody actionList()
;actionList()
odpytuje bazę danych, aby zwrócić listę najnowszych wiadomości;actionList()
wyświetla widok list
wypełniony danymi wiadomości.
Signup or Login in order to comment.