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.inidla 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.inijest używany i które rozszerzenia są załadowane. Jeśli nieprawidłowy plikphp.inijest 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.