55873970 Cakephp Framework

Embed Size (px)

Citation preview

CakePHP Training Cource

1

CAKEPHP FRAMEWORK1.1. Gii thiuCakePHP l mt nn tng pht trin ng dng nhanh, m ngun m min ph s dng ngn ng lp trnh PHP. Cu trc ca n c to ra lp trnh vin to cc ng dng web. Mc tiu ch yu ca chng ti l to ra mt nn tng c cu trc, cho php bn lm vic trn cu trc mt cch nhanh chng m khng mt i s uyn chuyn. CakePHP loi b s nhm chn trong pht trin ng dng web. Chng ti cung cp cho bn cc cng c bn cn vit th bn cn: l logic c th ca ng dng. Thay v phi lm i lm li mt th khi bn bt u to mi d n (prect), bn ch cn to mt bn copy ca CakePHP v tp trung vo vic chnh ca d n. CakePHP c mt i ng pht trin v cng ng nng ng, iu ny mang li gi tr to ln cho cc d n. Ngoi vic gip bn khi phi lm i lm li mt vic no , s dng CakePHP ng ngha vi phn ct li ca ng dng ca bn c kim chng v ci tin khng ngng.

1.2. Tnh nng ca CakePHP Cng ng nng ng, thn thin Vic cp php uyn chuyn Tng thch vi PHP 4 v PHP 5 Tch hp sn CRUD (Khi lm vic vi c s d liu) H tr lm vic vi c s d liu (scaffolding) T ng sinh m code Kin trc MVC Cho php to ra cc URL r rng, d hiu. Cung cp kh nng bt li Cho php to ra cc bn mu (templating) nhanh chng v uyn chuyn Cc tin ch giao din cho AJAX, JavaScript, HTML Forms,... C cc cng c x l Email, Cookie, Security, Session, yu cu (Request Handling) Danh sch iu khin truy cp (ACL) uyn chuyn Cung cp sn tin ch x l d liu (Data Sanitization) Cung cp kh nng lu tm (Caching) uyn chuyn Cung cp kh nng ni a ha (localization)L Vn S - Hirevietnamese

CakePHP Training Cource

2

C kh nng chy t bt k th mc web no m khng cn phi cu hnh Apache hoc ch cu hnh li rt t

1.3. M hnh MVC trong CakePHPCakePHP tun theo m hnh thit k phn mm chun (design pattern) MVC. MVC chia chng trnh thnh 3 phn ring l: 1. Model: M t d liu ca ng dng 2. View: Hin th d liu ca model 3. Controller: X l v iu hng cc yu cu ca client

Hnh 1.

M hnh MVC trong CakePHP

1.4. Ci t1.4.1. Ci tDowload b cakePHP version 1.2 ti: http://github.com/cakephp/cakephp/archives/1.2

1.4.2. Cu hnh c th kt ni vi database , ta phi cu hnh li file database.php trong th mc app/config nh sau :var $default = array( 'driver' => 'mysql', 'persistent' => 'false', 'host' => 'localhost', 'port' => '', 'login' => 'account', 'password' => 'password', 'database' => 'tn database, 'schema' => '', 'prefix' => '', 'encoding' => '' );

L Vn S - Hirevietnamese

CakePHP Training Cource

3

Nh vy cakePHP c cu hnh thnh cng v c th kt ni vi c s d liu

1.5. Cu trc th mc ca CakePHPSau khi bn download v gii nn CakePHP, bn cn lu n 3 th mc chnh sau:

Th mc app l ni m bn lm vic: Ni y lu cc file ca ng dng do bn vit. Th mc cake l ni bn thay i cc file core ca CakePHP. Bn phi tht cn thn khi thay i cc file trong ny, v chng ti khng th gip g cho bn nu bn thay i cc file core. Th mc vendors l ni bn ci cc th vin PHP ca nh cung cp th 3 m bn cn s dng vi ng dng CakePHP ca bn.

1.5.1. Th mc AppTh mc app ca CakePHP l ni bn chnh bn pht trin ng dng. By gi chng ta s xem qua cc th mc pha trong ca th mc app. Ni lu gi mt s file cu hnh ca CakePHP. File lu thng tin kt ni n c s d liu, file bootstrap (dng np cc hm khng nm trong mt lp no c), file cu hnh CakePHP nn c lu y. Cha cc controller v cc component ca ng dng. controllers Lu cc file vn bn c s dng cho mc ch quc t ha ng locale dng. Cha cc file model, behavior v datasource ca ng dng. models Cha cc plugin. plugins Lu cc file tm ca CakePHP. D liu thc CakePHP lu ph tmp thuc vo bn cu hnh CakePHP nh th no, tuy nhin th mc ny thng c s dng lu cc m t v model, logs, v i khi l thng tin session. config Bn phi chc chn rng th mc ny tn ti v c th ghi c nu khng th hiu nng ca ng dng s b nh hng nghim trng. ch sa li (debug), CakePHP s cnh bo cho bn nu th mc ny khng tn ti hoc khng ghi c. Cc lp hoc cc th vin ca nh cung cp th 3 nn c trong th mc ny. Lm nh vy s gip cho cc file ny d dng c truy cp bng cch s dng hm App::Import('vendor', 'name'). Thot nhn qua th th mc ny c v l tha v c 1 th mc vendors khc nm ngoi. Chng ta s tm hiu s khc nhau ca cc th mc ny khi chng ta tho lun v qun l thit lp nhiu ng dng v h thng phc tp.. Cc file hin th c y: cc file element, trang thng boL Vn S - Hirevietnamese

vendors

views

CakePHP Training Cource

4

webroot

li, cc file helper, cc file layout v cc file view. Trong mi trng tht (CakePHP c th chy mi trng development, test, production), th mc ny nn ng vai tr l th mc gc ca ng dng. Cc th mc y thng l cc th mc cho css, nh v javascript.

1.6. Cc quy c ca CakePHP1.6.1. Cc quy c v file v tn lpNi chng, tn file s dng du gch di, trong khi tn lp s dng CamelCased (v d nh SportCar). V vy nu bn c lp MyNiftyClass, khi trong CakePHP tn ca file nn l my_nifty_class.php. Di y l cc v d v cch t tn file cho mi dng lp khc nhau m bn thng s dng trong ng dng CakePHP:

nh ngha lp controller KissesAndHugsController nm trong file tn l kisses_and_hugs_controller.php (Lu _controller trong tn file) nh ngha lp component MyHandyComponent nm trong file tn l my_handy.php nh ngha lp model OptionValue nm trong file option_value.php nh ngha lp behavior EspeciallyFunkableBehavior nm trong file especially_funkable.php nh ngha lp view SuperSimpleView nm trong fle super_simple.php nh ngha lp helper BestEverHelper nm trong file best_ever.php Mi file c t trong 1 th mc quy c di th mc app.

1.6.2. Quy c v tn model v tn bng c s d liuModel classnames l s t v CamelCased Person, BigPerson, hay ReallyBigPerson l nhng v d v tn Model thng thng. Tn bng c s d liu tung ng cho cakePHP model l s nhiu v c gch di. Cc bng s c cp ti bi cc model tng ng l people,big_people v really_big_people tng ng. Bn c th s dng th vin tin ch Inflector kim tra t s nhiu hay s t. Tn trng c hai hay nhiu t s c ni bng gch ni di first_name. nh :

Nhng kha ngoi trong cc mi quan h hasMany,belongsTo hoc hasOne c chp nhn mc nh dng tn(s t) ca bng lin quan theo sau _id. V vy , nu mt Baker hasMany vi Cake th bng cakes s rng buc vi bng bakes theo thng qua mt kha ngoi l baker_id. i vi mt bng c tn to t nhiu t nh category_types th kha ngoi c s l category_type_id.

L Vn S - Hirevietnamese

CakePHP Training Cource

5

Kt ni cc bng, c dng trong kt hp hasAndBelongsToMany gia cc model s c t tn sau theo bng model s kt ni theo th t alphabetical. Tt c cc bng m cc model ca CakePHP tng tc ti u cn mt kha chnh duy nht nhn nh mi hng. Nu bn mun m hnh ha mt bng m khng c mt kha chnh no th mt trng kha chnh n s c thm vo bng. CakePHP khng h tr to nhng kha chnh. Nu bn mun thao tc trc tip trn bng d liu, hy s dng cu truy vn trc tip hoc thm kha chnh n hot ng nh mt m hnh bnh thng.CREATE TABLE posts_tags ( id INT(10) NOT NULL AUTO_INCREMENT, post_id INT(10) NOT NULL, tag_id INT(10) NOT NULL, PRIMARY KEY(id)); )

Thay v s dng mt m kha t ng tng l kha chnh, bn cng c th s dng char (36). Cake sau s s dng 36 k t UUID (String:: uuid) bt c khi no bn lu mt bn ghi mi bng cch s dng phng thc Model::save.

1.6.3. Quy c v ControllerTn lp Controller dng s nhiu v CamelCased v kt thc bng Controller, v d: PeopleController v LatestArticlesController. Phng thc mc nh khi bn gi mt controller m khng ch nh chnh xc l gi action no l index(). V d: c mt yu cu ti http://www.example.com/apples/ th cakePHP s t ng gi phng thc index() ca lp ApplesController. V nu gi ti http://www.example.com/apples/view/ th phng thc view trong controller s c thc hin.

1.6.4. Quy c v ViewFile trong view c t tn sau hm chc nng, sau du gch ngang. Hm getReady() ca lp PeopleController s tm thy trong /app/views/people/get_ready.ctp Mu c bn l /app/views/controller/underscored_function_name.ctp. Bng cch t tn cc thnh phn ng dng s dng theo quy c ca CakePHP bn c c chc nng m khng c s rc ri v d cu hnh Mt s v d s dng theo quy c

Database table: "people" Model class: "Person", ti th mc /app/models/person.php Controller class: "PeopleController", th mc /app/controllers/people_controller.php View template, ti th mc /app/views/peoples/index.ctp

L Vn S - Hirevietnamese

CakePHP Training Cource

6

S dng nhng quy c , CakePHP bit rng yu cu t http://example.com/people/ c phng n gi hm index() ca Peoplecontroller, ni m model Person t ng c sn (v t ng gn vi bng people trong c s d liu), v dng file index.ctp hin th ra trnh duyt ca ngi s dng.

1.7. Cc thnh phn chnh ca CakePHP1.7.1. ModelModels i din cho d liu v c dng trong cc ng dng CakePHP truy cp d liu. Mt Model thng i din cho mt bng d liu nhng c th c dng truy cp bt c nhng g c lu tr d liu nh cc tp tin, bn ghi LDAP, cc s kin iCal, hoc cc hng trong mt tp tin CSV. Mt Model c th c rng buc vi cc Models khc. V d nh : mt Recipe c th c rng buc vi Author ca Recipe bng Ingredient trong Recipe. Phn ny s gii thch nhng im c trng ca Models c th c t ng ha, lm th no c th ghi ln nhng im , v nhng thc, thuc tnh no m mt Model c th c. N s trnh by nhng cch khc nhau kt hp c s d liu ca bn, N s th hin lm th no tm kim, lu tr v xa d liu. Cui cng l xem xt Datasources. 1.7.1.1. Hiu bit v Models Mt Model i din cho m hnh d liu ca bn. Trong lp trnh hng i tng mt m hnh d liu l mt i tng i din cho mt mt th, nh mt chic xe, mt ngi hay mt ngi nh. V d : mt blog c th c nhiu bi vit (Blog Post) v mi bi vit c th c nhiu kin (Comment). Blog, Post, Comment l nhng v d cho Models, mi ci s c rng buc vi cc ci khc. y l mt v d n gin v vic nh ngha mt Model trong CakePHP:

Ch cn vi khai bo n gin nh trn, Model Ingredient c t cho tt c nhng chc nng bn cn to cu truy vn lu v xa d liu. Chng l nhng phng thc k diu t lp Model ca CakePHP bi tnh k diu ca tnh tha k. Model Ingredient m rng ng dng Model, AppModel, c m rng t lp Model ni ti ca CakePHP. l ct li ca lp Model t cc chc nng cho Model Ingredient ca bn. To tp tin PHP cho Model ca bn trong /app/models/ hoc trong th mc con ca /app/models/ . CakePHP s tm kim n mt ni bt k trong th mc. Theo quy c n cn c cng tn vi lp. V d : ingredient.php Vi Models c nh ngha, n c th c truy cp t bn trong Controller ca bn. CakePHP t ng lm cho Model cho php truy cp khi n c tn ph hp

L Vn S - Hirevietnamese

CakePHP Training Cource

7

vi Controller. V d : Mt Controler c t tn l IngredientsController s t ng khi to model Ingredient v gn n vo controller bng $this->Ingredient.

Trong v d sau y, Recipe c mt s rng buc vi Ingredient model

Nu cc Model thc s khng c s rng buc ln nhau th bn c th s dng phng thc Contrller::loadModel() c c Model.

1.7.1.2. To bng c s d liu Trong khi CakePHP c th c datasources m khng phi l c s d liu iu khin , hu ht thi gian chng c . CakePHP c thit k cho thuyt bt kh tri v s lm vic vi MySQL, MSSQL, Oracle, PostgreSQL v nhng h qun tr khc. Bn c th to cc bng c s d liu nh bnh thng. Khi bn to cc lp Model th chng s t ng nh ngha cc bng m bn to. Tn bng c quy c vit bng ch thng v cc bng to bi nhiu t th c ni vi nhau bng du gch di. V d, mt Model tn l Ingredient s dnh cho bng c tn l ingredients. Mt model tn l EventRegistration s dnh cho bng c tn l event_registrations. CakePHP s kim tra xc nh dng d liu ca tng trng trong bng v s dng thng tin ny t ng ha cc tnh nng khc nhau nh trong vic xut cc trng d liu ln View.

L Vn S - Hirevietnamese

CakePHP Training Cource

8

Tn cc trng ca bng c s d liu cng c quy c vit bng ch thng v ni vi nhau bng du gch di. Trong phn cn li ca phn ny bn s c thy lm th no CakePHP nh ngha c s d liu. Mi h qun tr c s d liu nh ngha loi d liu theo nhng cch khc nhau. T lp m ngun cho n h thng d liu, CakePHP v ra trn mt giao din thng nht, khng c vn m h thng c s d liu bn cn chy trn n.

Hnh 2.

Kiu d liu MySQL tng ng vi CakePHP

Hnh 3.

Kiu d liu Oracle tng ng vi CakePHP

1.7.1.3. Cc phng thc thng dng trong Model Find - find($type, $params);

L Vn S - Hirevietnamese

CakePHP Training Cource

9

$type l trng hp d b li. Ch mt k t vit hoa (v d : All )s khng cho kt qu nh mong i. $param c dng truyn cc tham s tm kim nh :array( 'conditions' => array('Model.field' => $thisValue), //array of conditions 'recursive' => 1, //int 'fields' => array('Model.field1', 'DISTINCT Model.field2'), //array of field names 'order' => array('Model.created', 'Model.field3 DESC'), //string or array defining order 'group' => array('Model.field'), //fields to GROUP BY 'limit' => n, //int 'page' => n, //int 'offset'=>n, //int 'callbacks' => true //other possible values are false, 'before', 'after' )

field

field(string $order=null)

$name,array

$conditions=null,

string

Tr v gi tr ca mt trng duy nht c ch nh bng bin $name t bn ghi u tin tha mn $conditions vi th t sp xp bi bin $order$model->id = 22; echo $model->field('name'); // echo the name for row id 22 echo $model->field('name', array('created set('activeMenuButton', 'posts'); Sau trong layout bin $activeMenuButton s c sn v c gi tr posts getVar()getVar(string $var)

ly gi tr ca viewVar vi tn l $var getVars() ly tt c danh sch cc bin c sn trong phm vi hin hnh. Tr v mt mng cc bin.

L Vn S - Hirevietnamese

CakePHP Training Cource

15

error()error(int $code, string $name, string $message)

hin th mt trang bo li cho ngi s dng. s dng layout/error.ctp tr li trang. $this->error(404, not found, sorry'); 'Not found', 'This page was

iu ny s lm cho mt trang bo li vi thng bo c ch nh. Quan trng ca n l bn tho thc hin khng dng li c bi View::error(). V vy bn phi ngng thc thi m ca bn nu bn mun tm dng li. element()element(string $elementPath, array $data, bool $loadHelpers)

Chuyn n mt element hoc xem mt phn . Xem phn v element cho bit cho bit thm nhiu thng tin v v d. uuid()uuid(string $object, mixed $url)

To ra mt DOM ID khng ngu nhin duy nht cho mt i tng, da vo loi i tng v a ch. Phng php ny thng dng bi cc helpers cn to ra DOM ID duy nht cho element chng hn nh AjaxHelper. $uuid = $this->uuid('form', array('controller' 'posts', 'action' => 'index')); //$uuid contains 'form0425fe3bad' addScript()addScript(string $name, string $content)

=>

Thm ni dung cho cc b m bn tho ni b. B m ny c lm sn trong layout nh l $scripts_for_layout. Phng php ny hu ch khi to cc Helpers cn phi thm javascript hoc css trc tip cho layout. Hy nh rng bn tho c thm t layout hoc cc element , trong layout s khng c thm vo $scripts_for_layout. Phng php ny thng c s dng t cc Helpers bn trong, ging nh Javascript v Html Helpers. 1.7.2.3. Helper CakePHP c mt s Helpers h tr trong vic to ra cch trnh by. Chng h tr trong vic to ra khun mu p (bao gm c hnh thc), h tr trong nh dng vn bn, thi gian v s, v thm ch c th tng tc chc nng Ajax. Di y l tm tt nhng Helpers. Helpers ca cakePHP Ajax M t c s dng cng vi th vin Prototype JavaScript to chc nng Ajax trong trnh by. Cha shortcut cho cc phng php ko / th, hnh thc ajax & lin kt, v nhiu hn na.

L Vn S - Hirevietnamese

CakePHP Training Cource

16

Cache Form Html

c s dng bi li xem ni dung cache. To ra cc hnh thc HTML Form ,cc element cng ni v x l cc vn xc nhn. Html Thun tin cho vic to cc phng php nh du cng nh cc thnh lp. Hnh nh, lin kt, bng biu, cc th tiu v nhiu hn na. Javascript c s dng thot khi cc gi tr s dng trong JavaScripts, vit ra d liu cho cc i tng JSON, v khi m nh dng s v nh dng tin t. Chia trang d liu v phn loi Phng php tin li cho xut d liu XML. Truy cp vit ra cc gi tr phin lm vic trong view Lin kt mt cch mnh m,lm ni bt, ct b t mt cch thng minh. Tm ra nm tip theo ,nh dng p (Hm nay, 10:30) v chuyn i vng thi gian Phng php tin li cho vic to tiu XML v cc element

Javascript

Number Paginator Rss Session Text Time Xml

Vi cc bn tng lm vic vi Cakephp hn cc bn khng l g vic s dng cc hepler trong cake nh form, html, javascript. Sau y ti xin lit k mt s hm hay s dng nht trong cakephp, cu trc v cch s dng chng. $javascript->link($url, $inline); $url (require): ng dn ti file javascript. Cc file javascript s c t trong th mc app/webroot/js. Mc nh url l ng dn ti th mc app/webroot/js/. $inline: (boolean) . Nu gi tr l true, th th script s c in trong th header , nu l false th s in trong $script_for_layout. Gi tr mc inh l true. V d: //D liu tr v html

L Vn S - Hirevietnamese

CakePHP Training Cource

17

$html->css(mixed $path, string $rel = null, array $htmlAttributes = array(), boolean $inline = true); To mt link ti file css. Nu $inline c gn l false, th th css s c t bn trong bin $script_for_layout, cn l true th t trong th header. Mc nh ng dn trong ca file css l /app/webroot/css/. V d: //D liu tr v html //Ta cng c th khai bo nhiu file css cng mt lc //D liu tr v html

$html->image(string $path, array $htmlAttributes = array()); To ra mt th nh dng l image. Mc nh n s ch ti th mc /app/webroot/img/ V d: //D liu tr v html

$html->link(string $title, mixed $url = null, array $htmlAttributes = array(), string $confirmMessage = false,boolean $escapeTitle = true); To ra mt th html link. Cc tham s truyn vo l $title: Nhn ca ng link. $url: ng dn ca link lin kt. $htmlAttributes: cc thuc tnh html ca th link. $confirmMessage: Thng bo khi kch vo link. Mc nh gi tr l false. V d: //D liu tr v HTML Enter //D liu tr v html Delete //Chui query cng c th to ra t mt th link() //D liu tr v html

L Vn S - Hirevietnamese

CakePHP Training CourceView image

18

$html->url($path); V d://Gi s ta ang trong project test //D liu tr v html '/test/cake.jpg' //D liu tr v html /test/file.txt

$form->create(string $model = null, array $options = array()); Tt c cc tham s c th l ty chn. Nu khng c tham s truyn vo, th mc nh phng thc l POST, v controller v action no gi ra view cha form ny th khi submit th form s chuyn d liu v controller v action y. V d://ta to ra mt form trong action c tn l add //D liu tr v html:

Cc tham s truyn vo: $model: tn model dng khi to form y. $option: Cc thuc tnh khai bo thm cho form y bao gm $options['type']: Ch nh cc phng thc truyn d liu. Gi tr hp l bao gm post, get, file, put v delete. V d: //D liu tr v html //D liu tr v html

options['url']: Ch nh ng dn khi form truyn d liu. Gi tr url c th truyn vo mt chui hay mt mng. V d: // hoc //D liu tr v html:

L Vn S - Hirevietnamese

CakePHP Training Cource

19

//D liu tr v html:

options['action']: Cho php ch nh mt action bt k trong controller hin ti. Gi s bn mun truyn d liu ti form login trong controller hin ti, bn c th khai bo nh sau: //D liu tr v html:

$form->end(submitName); To ra mt th form ng trong trng hp s dng $form->create. V d: hoc: //D liu tr v html

1.7.3. Controller1.7.3.1. Gii thiu Mt controller (iu khin) c s dng qun l v mt logic ca mt phn trong ng dng ca bn. Hu ht, cc controller c s dng qun l mt model (m hnh) n gin. V d, nu bn xy dng mt trang web cho mt hiu bnh trc tuyn, bn cn phi c RecipesController v IngredientsController qun l cng thc v thnh phn. Trong CakePHP, nhng controller c t tn nh l ca model nhng dng s nhiu. Model Recipe c iu khin bi RecipesController, model Product c iu khin bi ProductsController v.v Nhng lp controller trong ng dng ca bn c k tha t lp CakePHP AppController. N c k tha t lp nhn Controller, mt phn ca th vin CakePHP. Lp AppController c nh ngha trong th mc app/app_controller.php v n cha nhiu phng thc c chia s gia tt c cc controller trong ng dng ca bn.

L Vn S - Hirevietnamese

CakePHP Training Cource

20

Controller c th thm vo nhiu phng thc m chng thng ch dn n cc action (hnh ng). Action l mt phng thc iu khin s dng hin th views (xem). Mt action n gin ch l mt phng thc ca controller. CakePHP l ngi vn chuyn gi cc action khi chng nm trong URL yu cu n action ca controller (tham chiu n Route Configuration bit cch thc gn cc tham s tn action ca controller trong URL). Quay li vi v d hiu bnh online ca chng ta, RecipesController c th cha cc phng thc (hay action) view(), share(), v search(). Controller s tm thy chng trong /app/controllers/recipes_controller.php anh c ni dung:

1.7.3.2. App Controller Nh gii thiu, lp AppController l lp cha ca tt c cc controller trong ng dng ca bn. Chnh lp AppController cng c kt tha t lp Controller cha trong th vin nhn ca CakePhp. AppController c nh ngha trong /app/app_controller.php nh sau:

Cc thuc tnh v phng thc c to trong AppController s c gi tr trn tt c cc controller trong ng dng ca bn. l tng to ra code (m chng trnh), ci m c s dng chung trong tt c cc controller. Components (s cp n sau) l m chng trnh tt nht c s dng nhiu controller (khng nht thit phi l tt c). Thng thng cc lut k tha t cc i tng c p dng, CakePHP cng to ra mt dy ph lm vic khi chng mang theo nhng thuc tnh c bit, ging nh danh sch cc component hoc helper c controller s dng. Trong trng hp ny, mng gi tr AppController c ni vi cc mng ca lp con. CakePHP ni nhng bin trong AppController vi cc mng trong controller ca ng dngL Vn S - Hirevietnamese

CakePHP Training Cource$components $helpers $uses

21

Nh rng thm cc helper Html v Form cn nh ngha $helpers trong AppController. Cng lu rng gi li AppController trong controller con t c kt qu tt nht:function beforeFilter(){ parent::beforeFilter(); }

1.7.3.3. Page Controller Nhn CakePHP c cha controller mc nh c gi l Pages Controller (cake/libs/controller/pages_controller.php). Trong chnh ch bn c th thy sau khi ci t CakePHP c pht ra nh s dng controller ny. N thng s dng to ra nhng trang tnh. V d nu bn to mt tp tin view /views/pages/about_us.ctp, khi cc bn c th truy cp http://l2qs.ttct/pages/about_us. Khi cc bn bake mt ng dng s dng console (iu khin dng lnh) ca CakePHP th pages controller s c sao chp t ng vo th mc app/controllers/ v nu cn bn c th sa i n. Hoc l bn c th sao chp t nhn ca ng dng.

1.7.3.4. Nhng thuc tnh Controller (attributes) Xin gii thiu mt s thuc tnh c bn ca lp Controller, cc bn c th tham kho y http://api.cakephp.org/class/controller. $name Ngi dng PHP4 nn bt u nh ngha controller bng cch s dng thuc tnh $name. Thuc tnh $name t tn cho controller. Thng thng, tn ch l s nhiu ca tn model c s dng.

$components, $helpers v $uses Tip n, mt trong nhng thuc tnh c CakePHP s dng nhiu l helpers, components, v models. Bn s s dng chng chung vi controller hin ti. S dng nhng thuc tnh ny l lm cho cc lp MVC a ra bi $components v $uses c hiu lc trong lp controller v cc bin trong lp (v d: $this>ModelName) v $helpers cho lp view nh mt bin tham chiu i tng ($helpername)

L Vn S - Hirevietnamese

CakePHP Training Cource

22

Mc nh, cc controller truy xut n model chnh ca chng. RecipesController s c model Recipe v tn ti $this->Recipe, v ProcductsController cng vy c model Product v $this->Product. Tuy nhin, khi bn cho php controller truy xut n cc model b tr th s dng bin $uses, tn ca controller hin hnh cng phi thm vo. Xem v d minh ha di. Cc helper Html, Form, v Session lun lun c. Nhng nu bn chn nh ngha mng $helpers trong AppController, th phi thm Html v Form nt bn mun n c hiu lc trong controller. Chng ta s bn k vn ny phn tip theo. V d v controller ca CakePHP thm cc lp MVC.

Mi bin trn c st nhp vi cc gi tr c kt tha, bi vy i lc n khng cn thit v d khai bo li helper Form hoc nhng th khai bo trong controller App ca bn, Nu bn khng mun s dng Model trong contrller ca bn th gn $uses = array(). Chng s cho php bn s dng mt controller m khng cn c model ng tn. $layout v $page Trong cc controller ca CakePHP c mt s thuc tnh iu khin cch b tr (layout) trang web. Thuc tnh $layout c th c gn bng tn ca mt layout c lu tr trong /app/views/layouts. Bn c th ch r mt layout bng cch gn bng tn layout b i .ctp. Nu bn khng nh ngha, th mc nh n s ly /app/views/layouts/default.ctp vn c sn trong CakePHP.

Bn cng c th thay i ta (title) ca trang web (ci dng ch nm gc phi trn ca trnh duyt) bng cch s dng $pageTite. V ng qun thm bin $title_for_layout, t nht l nm gia th v th u ca on m HTML.

Bn cng c th thit t t ca trang bng cch s dng $this->pageTitle (phi thm $this->part). Bn nn lm nh vy vic phn cch trang web mt cch logic t layout v ni dung. Vi nhng web tnh bn nn s dng $this->pageTitle trong view nu bn mun c title khc. Nu khng c thit t th CakePHP s t ng to ra t tn controller v tn ca view. $params Cc tham s controller s nm trong $this->params trong trang controller ca CakePHP. Thuc tnh ny s cung cp truy cp thng tin ca yu cu hin ti. Hu ht vic s dng $this->params l truy cp thng tin t controller thng qua POST v GET. $this->params['form']: lu tr d liu POST t form c lu tr. Thng tin km theo cng c cha trong $_FILES. $this->params['admin']: c t bng 1 nu hot ng hin ti thng qua admin routing. $this->params['bare']: lu tr 1 nu layout hin ti trng, 0 nu ngc li. $this->params['isAjax']: lu tr 1 nu Ajax c gi. Bin ny c thit t khi RequestHandler Component c s dng trong controller. $this->params['controller']: lu tr tn controller hin ti trong yu cu (request). V d nu URL /posts/view/1 c yu cu th $this->params['controller'] l "posts". $this->params['action']: lu tr tn ca action hin ti cha trong yu cu. V d nu yu cu URL /posts/view/1 was requested th $this->params['action'] cha "view". $this->params['pass']: tr v mt mng (nh ch s bng s)cc tham s sau action.// URL: /posts/view/12/print/narrow Array ( [0] => 12 [1] => print [2] => narrow )

$this->params['url']: lu tr URL hin ti, cha cp kha-gi tr. V d URL /posts/view/?var1=3&var2=4 c gi, $this->params['url'] s cha:[url] => Array ( [url] => posts/view

L Vn S - Hirevietnamese

CakePHP Training Cource[var1] => 3 [var2] => 4 )

24

$this->data: dng mang d liu t FormHelper forms n controller.// The FormHelper is used to create a form element: $form->text('User.first_name');

c dch ra view:

Khi submit d liu s c cha trong this->data//The submitted first name can be found here: $this->data['User']['first_name'];

$this->params['prefix']: thiu t tin t ca routing. V d gi tr l "admin" vi cc yu cu /admin/posts/someaction. $this->params['named']: lu tr cc tham s trong URL dng /key:value/. V d URL/posts/view/var1:3/var2:4 th $this->params['named'] l mng nh sau:[named] => Array ( [var1] => 3 [var2] => 4 )

persistModel S dng to nhng cc nh (cache) nhng th hin ca model ca controller s dng. Khi t l true, tt c cc model c lin quan n controller s c lu tr. N tng thm hiu qu trong nhiu trng hp. Cn rt nhiu thuc tnh khc. 1.7.3.5. Nhng phng thc Controller (methods) Tng tc vi View set(string $var, mixed $value) : y l phng thc chnh c th truyn gi tr bin t Controller ra View. You have selected icing for the cake.

Phng thc set() cng cho php chng ta truyn mng ra view. iu ny thun tin khi a ra mt t hp thng tin. render(string $action, string $layout, string $file) : mi ln yu cu mt action ca controller, sau khi thc hin xong cc thao tc, th phng thc ny c gi mt cch t ng. Phng thc ny thc hin tt c cc view (s dng d liu c a ra trong hm set()), thay ch cc view vo trong cc layout v th hin ra giao din ngi dng.

L Vn S - Hirevietnamese

CakePHP Training Cource

25

Theo quy c, cc tp tin xem mc nh s c a ra. Nu action search() ca RecipesController c yu cu, th tp tin view /app/views/recipes/search.ctp s c a ra.class RecipesController extends AppController { ... function search() { // Render the view in /views/recipes/search.ctp $this->render(); } ... }

Mc d CakePHP t ng gi phng thc render() (tr khi thit t $this>autoRender l false) th sau mi trnh t hot ng, bn c th s dng n ch nh mt tp tin khc bng cch ch ra tn ca action trong controller no nh vo s dng tham bin $action. Nu $action bt u bng / n s ly mt view hoc element trong th mc /app/views.// Render the element in /views/elements/ajaxreturn.ctp $this->render('/elements/ajaxreturn');

Bn cng c th ch nh tp tin view hoc element nh vo tham s $file. Khi s dng $file, ch ci t mt vi hng s ca CakePHP. Tham s $layout cho php bn ch c layout cho view c a ra. Flow Control redirect(string $url, integer $status, boolean $exit): l phng thc thng c s dng nht. Phng thc cha tham bin u tin l nh dng URL ca CakePHP. Phng thc chuyn hng view sang mt view khc.function placeOrder() { //Logic for finalizing order goes here if($success) { $this->redirect(array('controller' 'thanks')); } else { $this->redirect(array('controller' 'confirm')); } }

=> =>

'orders', 'orders',

'action' 'action'

=> =>

Cng c th s dng URL bt k.$this->redirect('/orders/thanks')); $this->redirect('http://www.example.com');

Cng c th a d liu qua action khc.$this->redirect(array('action' => 'edit', $id));

Tham s th hai cho php bn nh ngha mt m trng thi (status) ca HTTP iu hng. Bn c th s dng 301 (chuyn mi mi), 303 (xem khc), hoc chuyn hng mt cch t nhin. Phng thc s gp exit() sau khi chuyn hng, tr khi tham s th 3 l false. Bn c th iu hng n mt trang lin k:$this->redirect($this->referer());

L Vn S - Hirevietnamese

CakePHP Training Cource

26

$this->redirect($this->referer()); Nu s dng mt tin t iu hng v bn mun iu hng b qua tin t th bn thit lp tham s th ba l null, false s khng hiu qu. V d di iu hng v trang admin, b tin t.$this->redirect(array('controller' 'admin' => null)); => 'orders', 'action' => 'add',

flash(string $message, string $url, integer $pause): ging nh direct() phng thc flash thng s dng chuyn ngi dng sang trang mi. N khc ch n s hin thng bo trc khi chuyn ti mt URL khc. Tham s u tin l thng ip c th hin, th hai l ng dn theo chun CakePHP, tham s th ba l s giy s dng trc khi chuyn hng. C th dng phng thc setFlash() thc hin to thng ip . Callbacks Cc controller ca CakePHP s chn v gi trc hoc sau khi action controller c nu ra. beforeFilter() : Hm ny s thc thi trc khi mi action ca controller thc thi. This function is executed before every action in the controller. y l ni thun li kim tra cc hot ng ca ngi dng. beforeRender() : c gi sau khi action c gi nhng trc khi view c nu ra. Ci ny khng hay dng nh cn nu bn gi render() c khi kt thc mt action. afterFilter() : c gi sau khi action controller v sau khi goi view hon thnh. y l phng thc cui cng controller c gi. Cc phng thc hu ch khc constructClasses : phng thc s gi cc model c yu cu bi controller. Qu trnh gi c thc hin bng chun CakePHP, nhng phng php ny l tin dng c khi truy cp vo b iu khin t gc khc nhau. Nu bn cn CakePHP trong mt kch bn dng lnh hoc s dng t bn ngoi, constructClasses () c th c ch. paginate : Cho php bn to ra mt trang theo m hnh c sn, h tr nh s trang requestAction(string $url, array $options) : hm ny gi mt action ca controller t cc v tr khc nhau v nhn kt qu t action . $url theo nh dng URL ca CakePHP. c thm d liu nhn t action s dng mng $options.

L Vn S - Hirevietnamese