Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
!ntendendo Banco
Ima ine que "c tenha uma #i#lioteca e queira
!ntendendo Banco
%ssim se7aramos o #anco em ta#elas
'a#ela %utor Id &ome%no ( )o#erto / Bira (**/ 1 6uis (*,+ 'a#ela 6i"ro Id &omePa ( !ditor VI / P0thon 1 MM2S3 4 MM2S3 / 5 CSS *. + MM2S3 1 'a#ela Id (*+, / !ditora &ome ( &o"atec &oisqDa
)elacionamentos
'a#elas 7ossuem relacionamentos
N e ev r c es 1
6IV)O
N pu blic a 1
%9'O)
!DI'O)%
!:em7los de Bancos
HD
Id ;a#ricante 'amanho 'i7o Com7utador8id
Placa de Video
Id ;a#ricante Modelo Com7utador8id
Computad or
Id &ome
Memoria
Id 'amanho ;a#ricante ;requencia
Monitor
Id Pole ada ;a#ricante
!:em7los de Bancos
Seriados
Id &ome Status Dia da Semana
Temporad as
Id &umero Seriado8id
Episodio
Id &ome &umero 'em7orada8id Dia do Mes
!:em7los de Bancos
Posts
Id 'itulo Cor7o Data 9suario8id
Comentari os
Id Comentario Data Post8id 9suario8id
Usuario
Id &ome Senha &ascimento !mail
!:em7los de Bancos
Campeonat o
Id %no &ome Data
Time
Id &ome
Integrante
Id &ome
Jogo
Id 'itulo Su#titulo Cor7o 6ocal
Rodada
Id &umero 'urno
!:em7los de Bancos
Campeonat o
Id %no &ome Data
Time
Id &ome
Integrante
Id &ome
Jogo
Id 'itulo Su#titulo Cor7o 6ocal
Rodada
Id &umero 'urno
&osso Banco
Con"en<=es>
Posts
id title #od0 created modified
Comments
id #od0 created 7ost8id user8id
Usaremos as conevences do Cake para facilitar a minha vida. -Nome das tabelas - created e modified - post_id e user_id - username e password
Users
id username 7assword
# mys l !u root ! p
Criando o no"o #anco> mys l" create database aulacake# Criando o meu usuario> mys l" $rant all on aulacake.% to aulacake&'(localhost& identified by &biraviadin&# Para administrar o #anco usaremos o 7h7m0admin
7h7M0%dmin
Sumario
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
CakePHP
CakePHP eh um framework 7ara %7lica<=es ?e# ;ramework de Software>
com7reende de um con@unto de classes im7lementadas em
Site do CakePHP
%rquitetura MVC
O CakePHP utili$a a arquitetura MVC Basicamente eh o se uinte>
Models> sEo os res7onsF"eis 7or se comunicar com o #anco,
7ara sal"ar, modificar e deletar os dados Controller> sEo eles quem mandam os models se comunicarem com o #anco, rece#e a res7osta e manda 7ara os "iews Views> sEo eles quem mostram 7ara os usuFrios o resultados das consultas 7edidas ao #anco
Sumario
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
Bai:ando o CakePHP
Para #ai:ar o Cake #asta ir no site e #ai:ar a
ultima "ersao VocG "ai escolher entre tarB $ C-14HBD e o $i7 C(B1MBD, dah na msm Descom7acteIo no seu diretJrio we# Mude o nome da 7asta e acesse ela no seu #rowser
!:> htt7>KK7ahnoisKL/..5(..*55Kaulacake
Possi"el !rro
O cake 7ode dar um erro quando usado com o
eh 7ossA"el que o site nEo a#raB Para corri ir o erro de"emos modificar um arqui"o oculto chamado Bhtaccess locali$ado na que "c descom7actouB
Modificando o Bhtacess
;a<a a se uinte modificacao no arqui"o>
MIfModule mod8rewriteBcN )ewrite!n ine on )ewriteBase KLeuKa77docake )ewrite)ule OP a77Kwe#rootK Q6R )ewrite)ule CBSD a77Kwe#rootKP( Q6R MKIfModuleN
a77Kwe#rootKBhtaccess
Core T %PP
&a 7asta que "c descom7actou
encontraremos as su#7astas>
a77 eh onde fica o seu site cake eh o cora<Eo CcoreD do cake 7lu ins 7lu ins 7ara facilitar ainda mais "endors nEo sei e nem quero sa#er 7or enquanto
a77sB Por isso nEo che uem 7erto se nEo sa#em o que estEo fa$endoB 9m core 7ode ter "arias a77s
Os 1 warnin s de start
2uando "c a#re o seu site "ai "er um
e:em7lo 7ronto @ah, com o 7adrao do cake7h7 VerF tam#Um 7ossA"eis mensa ens em amarelo, sEo elas>
Please change the value of 'Security.salt Your tmp directory is not writable Your database configuration file is NOT present
Securit0 Salt
&o arqui"o a77Kconfi KcoreB7h7,
era<Eo de Hashes, sem7re que 7recisar erar um, o cake "ai 7e ar o "alor dessa strin Pode usar qualquer strin , contanto que nEo se@a facilmente adi"inhada Isso eh utili$ado 7or e:em7lo, na cria<Eo do hash da senhas de usuFrios do site
Diretorio tm7
O diretJrio tm7 da sua a77, de"e ser writa#le Se ele ainda nEo esti"er, #asta usar o
comando chmod>
Modulo mod8rewrite
Para que o cake7h7 funcione o modulo
rewrite do a7ache de"e estar ha#ilitado Voce 7ode usar o comando a7ache/ctl IM 7ara sa#er se o modulo esta sendo usado Procure na res7osta do comando a linha>
rewrite8module CsharedD
Sumario
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
Models
Vamos entEo criar os nossos models Por con"en<Eo cada ta#ela no #anco terF um
model corres7ondente e o nome do model serF o nome da ta#ela no sin ular Para criar um model, crie um arqui"o a77KmodelsKMnomedata#elaNB7h7 'odos os models sEo classes em 7h7 e herdam da classe %77Model Vamos criar o model da ta#ela 7ost no 7rJ:imo slide
Model de Post
%rqui"o a77KmodelsK7ostB7h7
)*php class +ost e,tends -pp.odel / var 0name 1 &+ost&# 2 *"
Controllers
Vamos entEo criar os nossos controllers Por con"en<Eo cada ta#ela terF um controller
corres7ondente e o nome do controller serF o nome da ta#ela no 7lural T controller Para criar um controller, crie um arqui"o
a77KcontrollersKMnomedata#elaN8controllerB7h7
herdam da classe %77Controller Vamos criar o controller da ta#ela 7ost no 7rJ:imo slide
Controller de Post
%rqui"o a77KmodelsK7ost8controllerB7h7
)*php class +ostsController e,tends -ppController / var 0name 1 &+osts&# 2 *"
Metodos
'odo controller eh com7osto de mUtodos,
esses mUtodos sEo as fun<=es da classe Cada mUtodo 7ode estar relacionado a al um "iew Os mUtodos sEo chamados tam#Um de actions Os metodos mais comuns sEo>
inde:, add, "iew e delete
%ction Inde:
%rqui"o a77KmodelsK7ost8controllerB7h7
)*php class +ostsController e,tends -ppController / var 0name 1 &+osts&# function inde,34 / 0this-"set3&posts&5 0this-"+ost-"find3&all&44# 2 2 *"
todos os metodos 7rontos 7ra "c, ou se@a, nEo enconste lah 'odos os outros controller herdam de %77Controller, e %77Controller herda tudo de Controller MUtodos mais comuns>
set
redirect
7a inate
request%ction
Metodos de Controllers
set
cria uma "ariF"el 7ara o seu "iew PthisINsetC V#iraW, V"iadinWD cria uma "aria"el P#ira cu@o "alor eh "iadin ser"e 7ara fa$er 7a ina<Eo dos dados rece#idos do model, serah "isto mais a frente chama um action de qualquer controller e rece#e o retorno dele Pdado XPthisINrequest%ctionCVKcommentsK7rimeiroWD @o a o retorno do metodo V7rimeiroW do controller VcommentsW na "aria"el Pdado
7a inate
request%ction
Metodos de Models
find CPt07e, P7aramsD
7ede ao #anco os dados do Model os "alores de Pt07e 7ode ser>
VfirstW 9 retorna apenas o primeiro resultado encontrado VcountW 9 retorna a )uantidade de resultados encontrados VallW 9 retorna todos os resultados VlistW 9 retorna todos os resultados em uma pe)uena lista Vnei h#orsW 9 retorna o resultado anterior e o pro,imo do pes)uisado
Views
Os "iews ficam locali$ados na 7asta a77K"iewsK Dentro dessa 7asta e:istem su#7astas, cada
controller terF uma su#7asta com seu nome Por con"en<Eo a 7asta serF i ual o nome da ta#ela do #anco no 7lural Cada "iew serF um arqui"o Bct7 dentro da 7asta do controller, e de"erF ter um action criado no controller Se "oce criou a function inde: no controller do 7ost, a ora "amos criar o "iew inde:Bct7 em a77K"iewsK7osts
View Inde:
%rqui"o a77K"iewsK7ostsKinde:Bct7
)pre" )*php print_r30posts4 *" )6pre"
htt7>KK7ahnoisKL/..5(..*55KaulacakeK7ostsKinde:K
9rl do Cake
htt7>KKwwwBinfBufesB#rKLmssoaresKsu7ortaoK7ostsK"iewK(,
site
minha%77
%ction
Controller Parametros
%dicionando Dados
Coloque o cJdi o a#ai:o no controller do 7ost
function add34 / if 37empty30this-"data44 / if 30this-"+ost-"save30this-"data44 / 0this-"8ession-"set9lash3(8eu +ost foi salvo.&4# 0this-"redirect 3array3&action& 1" &inde,&44# 2 2 2
%dicionando Dados
Crie o "iew addBct7
)h1"-dd +ost)6h1" )*php echo 0form-"create3&+ost&4# echo 0form-"input3&title&4# echo 0form-"input3&body&5 array3&rows& 1" &:&44# echo 0form-"end3(8alvar +ost&4# *"
Sumario
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
Hel7ers
O nome @F di$ tudo, estEo aqui 7ara a@udar Os hel7ers 7adr=es estao na 7asta
cakeKli#sK"iewsKhel7ersK
a@a: cache form html @s @a"ascri7t num#er
Hel7er ;orm
Criando um formulario>
echo 5form97create"'Post'34
;echando um formulFrio
echo 5form97end"Salvar'34
Hel7er ;orm
in7ut C Pcoluna , arra0 Po7tions D
echo PformINin7utCZ#od0Z, arra0CZrowsZ XN Z5ZDDY
te:t check#o: te:tarea 7assword dia mes ano selects dia mes ano hora minuto selects hora minuto selects
Hel7er ;orm
in7ut C Pcoluna , arra0 Po7tions D Os "alores 7ara o arra0 Po7tions 7ode ser>
array" 'type' 67 'file# 'options' 67 array";#-#'#C#D3# 'label' 67 'The /ser @lias# 'default'67'Sugar# 'rows' 67 'D'# 'cols' 67 'D# 'empty' 67 '"choose one3' 3
Hel7er ;orm
in7ut C Pcoluna , arra0 Po7tions D Os "alores 7ara o arra0 Po7tions 7ode ser>
array" 'type' 67 'file# 'options' 67 array";#-#'#C#D3# 'label' 67 'The /ser @lias# 'default'67'Sugar# 'rows' 67 'D'# 'cols' 67 'D# 'empty' 67 '"choose one3' 3
Hel7er Html
CSS
echo PhtmlINcssCZcakeB enericZDY
cakeKli#sK"iewsKdefaultBct7 Co7ie esse arqui"o 7ara a77K"iewsKla0outK &esse arqui"o fica o la0out da sua a7lica<Eo, o la0out eh a 7arte que nEo muda no seu site
Hel7er Html
Ima e
echo PhtmlINima eC[reci7esK+B@7 [, arra0C [alt[ XN [Brownies[, ZurlZ XN VKreci7esK"iewK+W DDY
Ima e
echo PhtmlINlinkCZ!nterZ, ZK7a esKhomeZ, arra0CZclassZXNZ#uttonZ,Ztar etZXNZ8#lankZDD
Hel7er Html
Outros mUtodos do hel7er do html
charset doc'07e meta st0le ta di" 7ara scri7t url
Hel7er )SS
%ntes de mais nada, "c de"e adicionar uma
linha em
a77Kconfi KroutesB7h7
1outer!!parse=,tensions"'rss'34
%dicione em a77KcontrollersK7osts8controllerB7h7
var 5components 6 array"'1e)uestEandler'34
Hel7er )SS
Hel7er 'ime
Dei:a um formato date time mais #onito>
;ue5 <an 1st =>>?5 1@A=B <an 1st =>>?5 1@A=B ;oday5 1@A=B on =16>16>? : months5 : weeks5 = days a$o E minutes a$o = seconds a$o
cakeKli#sK"iewsKhel7ersKtimeB7h7 O recomendado eh que "c sal"e esse hel7er na a77 e modifique lah
Data Validation
9ma coisa que "ai te a@udar no cake eh "alidar os
dados antes de add al o % "alida<Eo eh tratada nos Models, a#ra o model do 7ost e 7onha o cJdi o>
var 5validate 6 array" 'title' 67 array" 'aplhanumeric' 67 array" 'rule' 67 array"'alphanumeric'3# 'message' 67 'O titulo soh pode ter numeros e letras< 'body' 67 array" 'not=mpty' 67 array" 'rule' 67 array"'not=mpty'3# 'message' 67 'Nao dei,e o corpo do post em branco< 34
3#
3#
3# 3#
'estando a Validation
'i7os de Validation
Vc 7ode colocar e:7ress=es re ulares na
"alida<Eo, mas 7ara facilitar sua "ida o cake @ah tem al umas 7rontas>
al7ha&umeric e:tension #etween file #lank i7 #oolean is9nique cc min6en th com7arison not!m7t0 date 7hone decimal 7ostal email url equal'o
Sumario
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
am#iente P%'H, 7ara ela achar o caminho do console e do 7h7 Console eh onde fica o e:ecutF"el cake cake #ake eh o camando que "ai fa$er tudo 7or "c
5 P@TE65P@TE!AhomeA-((D;((&DDAaulaca8eAca8eAconsoleA 5 e,port P@TE
Bakeando o site
&o terminal, entre na 7asta a77
5 cd HApastawebAaulaca8eAappA
)ode o comando>
5 ca8e ba8e
!scolha a o7<Eo M de model ;a<a a mesma coisa 7ara os tres models De7ois fa<a 7ara controllers e "iews
Bakeando o site
% ora acesse o site 'udo esta 7ronto se uindo um 7adrEo do
cake7h7 Vc 7ode alterar o 7adrEo do seu @eito, assim "c aca#a de #akear o site e @ah tah tudo 7ronto
Sumario
Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a ma ica do CakePHP
Com7onents
Os com7onents 7ro"Gm "arias funcionalidades
Com7onents %uth
% 7rimeira coisa a ser fa$er eh ati"ar o
com7onente no controller>
var 5components 6 array"'@uth'34
adicionar essa linha em %77Controller % ora todo o seu site esta #loqueado 7ara quem nEo esta lo ado !ntao "amos fa$er a tela de lo in
Com7onents %uth
&o controller 9ser, crie os dois actions>
lo in
function login "3 F G
lo out
function logout "3F 5this97redirect"5this97@uth97logout"334 G
Com7onents %uth
%rqui"o a77K"iewsKusersKlo intBct7
>Iphp echo 5session97flash"'auth'34 echo 5form97create"'/ser'# array"'action' 67 'login'334 echo 5form97input"'username'34 echo 5form97input"'password'34 echo 5form97end"'Jogin'34 I7
Com7onents %uth
Mas e se eu nEo quiser que todo o meu site
se@a #loqueado 7ara nEo users Coloque no controller que nEo queira ser #loqueado a fun<Eo #efore;ilter Dentro de allow coloque as actions que serEo 7ermitidas a "isitantes !:em7lo em a77KcontrollersKusers8controllerB7h7
function before2ilter"3 F 5this97@uth97allow"'add'34 G