Bài 2: Mô hình MVC trong
Yii framework
Bài 2: Mô hình MVC trongYii framework
M c tiêu bài h c
Gi i thi u t ng quan v MVC trong Yii framework
Tìm hi u các v n :
• Application
• Controller
• Model
• View
• Component
• Module
• Các thành ph n khác
Bài 2: Mô hình MVC trongYii framework
2
Gi i thi u t ng quan v MVC trong
Yii framework
Bài 2: Mô hình MVC trongYii framework3
Mô hình MVC?
Yii s d ng mô hình MVC (Model-View-Controller)
MVC h ng t i vi c phân chia các logic
c thù trong
vi c giao ti p v i ng i dùng
Trong mô hình MVC, Model
i di n cho thông tin và
các lu t i v i thông tin ó.
View ch a các
i t ng t ng tác tr c ti p v i ng i
dùng nh là các nút, các textbox,...
Controller s giúp M và V t ng tác v i nhau, nó
m
nh n vi c x lý d li u, thu th p d li u t View ho c
a d li u t Model ra View...
Bài 2: Mô hình MVC trongYii framework4
Mô hình MVC?
Yii gi i thi u i t ng front-controller, g i là Application:
Application thu th p d li u t request c a ng i dùng
và a t i controller phù h p
x lý.
Bài 2: Mô hình MVC trongYii framework5
Workflow c b n?
th bên d i s ch cho các b n th y m t lu ng x lý c n b n
c a Yii khi nh n yêu c u t phía ng i dùng (Yêu c u
ây có th là
t URL, t Form,...):
Di n gi i chi ti t:
• Ng i dùng s g i yêu c u d i d ng 1 URL d ng
nh và
WebServer s ti p nh n yêu c u ó b ng cách th c thi
"bootstrap script" index.php!
• Bootstrap script s kh i t o m t th hi n c a Application và
ch y nó.
• Application có
c thông tin yêu c u c a ng i dùng t m t
m t i t ng bên trong application tên là request!
• Application xác nh controller và action mà yêu c u g i t i nh
m t thành ph n khác g i là urlManager. Ví d
ây controller
g i t i là post, action là id
Bài 2: Mô hình MVC trongYii framework6
Workflow c b n?
Di n gi i chi ti t:
• Application t o m t instant controller t ng ng
ti p t c x
lý yêu c u c a ng i dùng. Controller nh n bi t
c yêu c u
show tham chi u t i ph ng th c tên là actionShow() trong
controller class. R i nó th c thi b l c c a chính nó
(PostController) liên quan t i yêu c u trên. N u th a mãn h t các
yêu c u c a b l c thì action show s
c th c thi.
• action load m t model nào ó (ví d Post) v i id =1 t c s d
li u
• action s render ra 1 view tên nào ó (ví d show)
• view s
c và show ra các thu c tính (attributes) c a Post model
• view lúc này có th th c thi thêm 1 s widget (n u
c khai báo
trong nó)
• view hi n th ra k t qu
c nhúng gi a m t layout!
• action hoàn thành vi c render ra view và hi n th trên trình duy t
c a ng i dùng!
Bài 2: Mô hình MVC trongYii framework7
Workflow c b n?
Bài 2: Mô hình MVC trongYii framework8
Entry Script?
Là file u tiên nh n toàn b request c a ng i dùng. File này
có th là index.php ho c b t c file nào khác:
N i dung:
L u ý: Ch y d i môi tr ng debug thì t t nhiên ch m h n,
nh ng nó s show ra cho chúng ta 1 s thông tin h u ích
trong quá trình phát tri n. Ch ng h n nh ch ng trình v a
th c thi nh ng câu SQL nào, m t bao lâu, l i x y ra class
nào, dòng bao nhiêu...
Bài 2: Mô hình MVC trongYii framework9
Tìm hi u Application?
Là i t ng th c thi ng c nh khi có yêu c u x lý:
Có th
c kh i t o b i Entry Script
Có th truy c p thông qua Yii::app()
Ta tìm hi u Application thông qua:
• C u hình
• Th m c c s
• Các thành ph n
• Thành ph n core
• Vòng i
Bài 2: Mô hình MVC trongYii framework10
C u hình Application?
i t ng Application là th hi n c a CWebApplication
Ví d : m ng sau s thi t l p giá tr 2 thu c tính name và
defaultController
c u hình App theo file config, ta có th dùng:
Bài 2: Mô hình MVC trongYii framework11
Th m c c s Application?
C n
c b o m t th m c c s
Trong file .htaccess, d i tên các th m c c s ta c n ghi
n i dung deny from all
Bài 2: Mô hình MVC trongYii framework12
Các thành ph n c a Application?
Các ch c n ng c a các
i t ng Application có th d
dàng
c tùy bi n b ng cách s d ng ki n trúc thành
ph n linh ho t c a nó
truy c p vào m t thành ph n ng d ng, s d ng:
Yii :: app() -> ComponentID
Ví d :
Bài 2: Mô hình MVC trongYii framework13
Các thành ph n core c a Application?
D i ây là danh sách các thành ph n core
trong CWebApplication
c khai báo
Bài 2: Mô hình MVC trongYii framework14
Các thành ph n core c a Application?
D i ây là danh sách các thành ph n core
trong CWebApplication
c khai báo
Bài 2: Mô hình MVC trongYii framework15
Vòng
i c a Application?
Vòng i c a Application qua các b c sau:
Ti n kh i t o v i CApplication::preinit();
Thi t l p các l p t
ng t i d li u và l i
ng ký các thành ph n core c a Application
T i c u hình ng d ng
Kh i t o ng d ng v i CApplication::init()
• ng ký các hành vi
•Load các thành ph n t nh
B t s ki n onBeginRequest
Th c thi các yêu c u c a user nh t p h p thông tin v
yêu c u, t o controller và ch y controller
B t s ki n onEndRequest
k t thúc yêu c u
Bài 2: Mô hình MVC trongYii framework16
Controller trong Yii?
Controller là m t th hi n c a l p Ccontroller ho c m t class
extend t Ccontroller. Nó
c t o b i application khi ng i
dùng th c thi yêu c u.
Các controller u có hành ng, m c nh là defaultAction.
Ví d :
Bài 2: Mô hình MVC trongYii framework17
Controller trong Yii?
Route:
Controller và các hành ng
c xác nh b i các ID
nh d ng c a Controller ID: path/to/xyz
Controller class l u :
• protected/controllers/PostController.php
Ví d : route có tên là post/edit tham chi u
n Post
Controller và s d ng hành
ng edit. Nh v y
ng
d n s là: http://hostname/index.php?r=post/edit
M t ng d ng có th ch a các module.
m t
controller yêu c u hành
ng t module thì yêu c u có
d ng: moduleID/controllerID/actionID
Bài 2: Mô hình MVC trongYii framework18
Controller trong Yii?
Cài t Controller:
Controller
c t o ra t CWebApplication khi có yêu c u.
Khi m t ID
c yêu c u, ng d ng s s d ng m t s qui
t c
xác nh v trí c a file:
CWebApplication::catchAllRequest: S d ng khi c n b o
trì (vì khi ó ID yêu c u s
c b qua)
CWebApplication::controllerMap: S d ng khi t o th
hi n c a controller.
CHttpException: S d ng khi yêu c u path/to/xyz không
xác nh
c ID
Bài 2: Mô hình MVC trongYii framework19
Controller trong Yii?
Hành ng:
Controller nh ngh a các hành
ng nh sau:
Khi controller nh n bi t
c hành
ph ng th c action tronng controller:
ng, nó s ghi
è lên
Bài 2: Mô hình MVC trongYii framework20
Controller trong Yii?
Hành ng:
Trong ví d v a nêu, chúng ta s d ng
ng d n:
• application.controllers.post.UpdateAction
Trên th c t hành ng này l u trong file:
• protected/controllers/post/UpdateAction.php
Ví d v c u trúc controller:
Bài 2: Mô hình MVC trongYii framework21
Controller trong Yii?
Tham s trong Hành ng:
Controller xác nh hành ng b ng $_GET
•Ví d v hành ng không có tham s :
Bài 2: Mô hình MVC trongYii framework22
Controller trong Yii?
Tham s trong Hành ng:
Controller xác nh hành ng b ng $_GET
•Ví d v hành ng có tham s :
Bài 2: Mô hình MVC trongYii framework23
Controller trong Yii?
Tham s trong Hành ng:
Controller xác nh hành ng b ng $_GET
•Ví d v xác nh hành
ng thông qua ph
Run()
ng th c
Bài 2: Mô hình MVC trongYii framework24
Controller trong Yii?
L c các Hành ng:
B l c là m t o n mã
c c u hình
ho c sau khi m t hành ng th c thi.
•Ví d :
•Ta có th s d ng $filterChain->run()
ng th c thi
th c hi n tr
c
l c các hành
Bài 2: Mô hình MVC trongYii framework25