CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework...
Transcript of CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework...
![Page 1: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/1.jpg)
![Page 2: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/2.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 3: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/3.jpg)
Entendendo BancoImagine que vc tenha uma biblioteca e queira
fazer um catalogo dos seus livros
ID Autor Nascido Titulo Pag Editora1 Roberto 1967 Editor VI 80 Novatec2 Roberto 1967 Python 300 Novatec3 Bira 1992 MMQSG24 NoisqDa4 Bira 1992 MMQSG 2 242 NoisqDa5 Luis 1976 CSS 90 Novatec6 Bira 1992 MMQSG 3 243 NoisqDa
Observe que tem dados sendo armazenados mais de uma vez
![Page 4: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/4.jpg)
Entendendo BancoAssim separamos o banco em tabelas
Tabela Autor Tabela EditoraId NomeAno Id Nome1 Roberto 1967 1 Novatec2 Bira 1992 2 NoisqDa3 Luis 1976
Tabela LivroId NomePag Autor_idEditora_id1 Editor VI 80 1 12 Python 300 1 13 MMQSG 24 2 24 MMQSG 2 242 2 25 CSS 90 3 16 MMQSG 3 243 2 2
![Page 5: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/5.jpg)
RelacionamentosTabelas possuem relacionamentos
N
publica 1
1
escreve
N
AUTOR
LIVRO
EDITORA
![Page 6: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/6.jpg)
Exemplos de Bancos
ComputadorIdNome
HDIdFabricanteTamanhoTipoComputador_id
MonitorIdPolegadaFabricante
Placa de VideoIdFabricanteModeloComputador_id
MemoriaIdTamanhoFabricanteFrequencia
![Page 7: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/7.jpg)
Exemplos de Bancos
TemporadasIdNumeroSeriado_id
SeriadosIdNomeStatusDia da Semana Episodio
IdNomeNumeroTemporada_idDia do Mes
![Page 8: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/8.jpg)
Exemplos de Bancos
UsuarioIdNomeSenhaNascimentoEmail
PostsIdTituloCorpoDataUsuario_id
ComentariosIdComentarioDataPost_idUsuario_id
![Page 9: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/9.jpg)
Exemplos de Bancos
RodadaIdNumeroTurno
CampeonatoIdAnoNomeData
JogoIdTituloSubtituloCorpoLocal
TimeIdNome
IntegranteIdNome
![Page 10: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/10.jpg)
Exemplos de Bancos
RodadaIdNumeroTurno
CampeonatoIdAnoNomeData
JogoIdTituloSubtituloCorpoLocal
TimeIdNome
IntegranteIdNome
![Page 11: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/11.jpg)
Nosso Banco
Postsidtitlebodycreatedmodified
Usersidusernamepassword
Commentsidbodycreatedpost_iduser_id
Convenções:Usaremos as conevencões do Cake para facilitar a minha vida.-Nome das tabelas- created e modified- post_id e user_id- username e password
![Page 12: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/12.jpg)
Criando nosso bancoUtilizando o mysql, fazemos:
Para logar no banco: # mysql –u root – p
Criando o novo banco: mysql> create database aulacake;
Criando o meu usuario: mysql> grant all on aulacake.* to aulacake'@‘localhost' identified by 'biraviadin';
Para administrar o banco usaremos o phpmyadmin
![Page 13: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/13.jpg)
phpMyAdmin
![Page 14: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/14.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 15: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/15.jpg)
CakePHPCakePHP eh um framework para Aplicações WebFramework de Software:
compreende de um conjunto de classes implementadas em uma linguagem específica, usadas para auxiliar o desenvolvimento de software. (Wikipedia)
Começou em 2005Ultima versão estável 1.3.0Site: cakephp.org
![Page 16: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/16.jpg)
Site do CakePHP
![Page 17: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/17.jpg)
Arquitetura MVC
O CakePHP utiliza a arquitetura MVCBasicamente eh o seguinte:
Models: são os responsáveis por se comunicar com o banco, para salvar, modificar e deletar os dados
Controller: são eles quem mandam os models se comunicarem com o banco, recebe a resposta e manda para os views
Views: são eles quem mostram para os usuários o resultados das consultas pedidas ao banco
![Page 18: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/18.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 19: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/19.jpg)
Baixando o CakePHP
Para baixar o Cake basta ir no site e baixar a ultima versao
Você vai escolher entre tar.gz (834KB) e o zip (1.3MB), dah na msm
Descompacte-o no seu diretório webMude o nome da pasta e acesse ela no seu
browserEx: http://pahnois/~2005100955/aulacake
![Page 20: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/20.jpg)
Primeira visao do site
![Page 21: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/21.jpg)
Possivel Erro
O cake pode dar um erro quando usado com o modulo userdir do apache
Se a sua url for desse tipo: http://meusite/~eu/appdocake/
eh possível que o site não abra. Para corrigir o erro devemos modificar um arquivo oculto chamado .htaccess localizado na que vc descompactou.
![Page 22: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/22.jpg)
Modificando o .htacessFaça a seguinte modificacao no arquivo:
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /~eu/appdocake RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L]</IfModule>
Faça a mesma modificação no arquivo app/webroot/.htaccess
![Page 23: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/23.jpg)
Core + APPNa pasta que vc descompactou
encontraremos as subpastas: app – eh onde fica o seu site cake – eh o coração (core) do cake plugins – plugins para facilitar ainda mais vendors – não sei e nem quero saber por enquanto
O core contem as informações vitais das suas apps. Por isso não cheguem perto se não sabem o que estão fazendo.
Um core pode ter varias apps
![Page 24: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/24.jpg)
Os 3 warnings de start
Quando vc abre o seu site vai ver um exemplo pronto jah, com o padrao do cakephp
Verá também possíveis mensagens em amarelo, são elas:
Please change the value of 'Security.salt‘ Your tmp directory is not writable Your database configuration file is NOT present
![Page 25: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/25.jpg)
Security SaltNo arquivo app/config/core.php,
possivelmente na linha 165, terá: Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
O Security Salt serve para a geração de Hashes, sempre que precisar gerar um, o cake vai pegar o valor dessa string
Pode usar qualquer string, contanto que não seja facilmente adivinhada
Isso eh utilizado por exemplo, na criação do hash da senhas de usuários do site
![Page 26: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/26.jpg)
Diretorio tmp
O diretório tmp da sua app, deve ser writableSe ele ainda não estiver, basta usar o
comando chmod:
chmod -R 777 app/tmp
![Page 27: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/27.jpg)
Configuracao do BancoPor ultimo, devemos configurar o bancoEdite o arquivo app/config/database.php.default
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => ‘pahnois',
'login' => ‘aulacake',
'password' => ‘biraviadin',
'database' => ‘aulacake',
'prefix' => '', );
Renomeie o arquivo para database.php
![Page 28: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/28.jpg)
Modulo mod_rewrite
Para que o cakephp funcione o modulo rewrite do apache deve estar habilitado
Voce pode usar o comando apache2ctl -M para saber se o modulo esta sendo usado
Procure na resposta do comando a linha: rewrite_module (shared)
![Page 29: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/29.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 30: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/30.jpg)
ModelsVamos então criar os nossos modelsPor convenção cada tabela no banco terá um
model correspondente e o nome do model será o nome da tabela no singular
Para criar um model, crie um arquivo app/models/<nomedatabela>.php
Todos os models são classes em php e herdam da classe AppModel
Vamos criar o model da tabela post no próximo slide
![Page 31: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/31.jpg)
Model de PostArquivo app/models/post.php
<?php
class Post extends AppModel {
var $name = 'Post';
}
?>
![Page 32: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/32.jpg)
ControllersVamos então criar os nossos controllersPor convenção cada tabela terá um controller
correspondente e o nome do controller será o nome da tabela no plural + controller
Para criar um controller, crie um arquivo app/controllers/<nomedatabela>_controller.php
Todos os controllers são classes em php e herdam da classe AppController
Vamos criar o controller da tabela post no próximo slide
![Page 33: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/33.jpg)
Controller de PostArquivo app/models/post_controller.php
<?php
class PostsController extends AppController {
var $name = 'Posts';
}
?>
![Page 34: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/34.jpg)
Metodos
Todo controller eh composto de métodos, esses métodos são as funções da classe
Cada método pode estar relacionado a algum view
Os métodos são chamados também de actions
Os metodos mais comuns são: index, add, view e delete
![Page 35: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/35.jpg)
Action IndexArquivo app/models/post_controller.php
<?php
class PostsController extends AppController {
var $name = 'Posts';
function index() {
$this->set('posts', $this->Post->find('all'));
}
}
?>
![Page 36: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/36.jpg)
Metodos jah prontosNo arquivo app/models/controller.php temos
todos os metodos prontos pra vc, ou seja, não enconste lah
Todos os outros controller herdam de AppController, e AppController herda tudo de Controller
Métodos mais comuns: set redirect paginate requestAction
Temos também os métodos que aparentam ser de controllers, mas na verdade são de models
![Page 37: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/37.jpg)
Metodos de Controllersset
cria uma variável para o seu view $this->set( ‘bira’, ‘viadin’) cria uma variavel $bira cujo valor eh viadin
paginate serve para fazer paginação dos dados recebidos do model,
serah visto mais a frente
requestAction chama um action de qualquer controller e recebe o
retorno dele $dado =$this->requestAction(‘/comments/primeiro’) joga o retorno do metodo ‘primeiro’ do controller
‘comments’ na variavel $dado
![Page 38: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/38.jpg)
Metodos de Modelsfind ($type, $params)
pede ao banco os dados do Model os valores de $type pode ser:
‘first’ - retorna apenas o primeiro resultado encontrado
‘count’ - retorna a quantidade de resultados encontrados
‘all’ - retorna todos os resultados
‘list’ - retorna todos os resultados em uma pequena lista
‘neighbors’ - retorna o resultado anterior e o proximo do pesquisado
$params vai ser um array com as opcoes da buscaarray( 'conditions' => array('Model.field' => $valor),
'fields' => array('Model.field1', ‘Model.field2’),
'order' => array('Model.created', 'Model.field3 DESC'),
'limit' => n )
![Page 39: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/39.jpg)
Outros metodos de ModelsfindAllBy<campo> ( ‘valor’ )findBy<campo> ( ‘valor’ )query ( ‘SELECT * FROM post;’ )read ( ‘nome’ , $valor )create ( )save ( $array )saveAll ( $arrays )delete ( $id )deleteAll ( $conditions )
![Page 40: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/40.jpg)
ViewsOs views ficam localizados na pasta app/views/Dentro dessa pasta existem subpastas, cada
controller terá uma subpasta com seu nomePor convenção a pasta será igual o nome da
tabela do banco no pluralCada view será um arquivo .ctp dentro da pasta
do controller, e deverá ter um action criado no controller
Se voce criou a function index no controller do post, agora vamos criar o view index.ctp em app/views/posts
![Page 41: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/41.jpg)
View IndexArquivo app/views/posts/index.ctp
<pre>
<?php
print_r($posts)
?>
</pre>
Entre no site para ver o resultado: http://pahnois/~2005100955/aulacake/posts/index/
![Page 42: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/42.jpg)
Url do Cakehttp://www.inf.ufes.br/~mssoares/suportao/posts/view/17
site minhaApp Action
Controller Parametros
![Page 43: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/43.jpg)
Adicionando DadosColoque o código abaixo no controller do post
function add() {
if (!empty($this->data)) {
if ($this->Post->save($this->data)) {
$this->Session->setFlash(‘Seu Post foi salvo.');
$this->redirect (array('action' => 'index'));
}
}
}
![Page 44: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/44.jpg)
Adicionando DadosCrie o view add.ctp
<h1>Add Post</h1>
<?php
echo $form->create('Post');
echo $form->input('title');
echo $form->input('body', array('rows' => '3'));
echo $form->end(‘Salvar Post');
?>
![Page 45: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/45.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 46: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/46.jpg)
HelpersO nome já diz tudo, estão aqui para ajudarOs helpers padrões estao na pasta
cake/libs/views/helpers/ ajax paginator cache RSS form session html text js time javascript xml number
![Page 47: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/47.jpg)
Helper FormCriando um formulario:echo $form->create('Post');
Substitui o código html<form id="PostAddForm" method="post" action="/aulacake/posts/add">
Fechando um formulárioecho $form->end(‘Salvar');
Substitui o código html<div class="submit"><input type="submit" value=“Salvar" /></div></form>
![Page 48: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/48.jpg)
Helper Forminput ( $coluna , array $options )
echo $form->input('body', array('rows' => '5'));
Dependendo do tipo da coluna o cake ajeita o formulário para vc
string text boolean, tinyint(1) checkbox text textarea password password date dia mes ano selects datetime dia mes ano hora minuto selects time hora minuto selects
![Page 49: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/49.jpg)
Helper Forminput ( $coluna , array $options ) Os valores para o array $options pode ser:
array(
'type' => 'file‘,
'options' => array(1,2,3,4,5),
'label' => 'The User Alias‘,
'default'=>'Sugar‘,
'rows' => '5', 'cols' => '5‘,
'empty' => '(choose one)'
)
![Page 50: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/50.jpg)
Helper Forminput ( $coluna , array $options ) Os valores para o array $options pode ser:
array(
'type' => 'file‘,
'options' => array(1,2,3,4,5),
'label' => 'The User Alias‘,
'default'=>'Sugar‘,
'rows' => '5', 'cols' => '5‘,
'empty' => '(choose one)'
)
![Page 51: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/51.jpg)
Helper HtmlCSS
echo $html->css('cake.generic');
Substitui o código html<link rel="stylesheet" type="text/css" href="/aulacake/css/cake.generic.css" />
Normalmente essa echo fica no arquivo, cake/libs/views/default.ctp
Copie esse arquivo para app/views/layout/Nesse arquivo fica o layout da sua aplicação,
o layout eh a parte que não muda no seu site
![Page 52: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/52.jpg)
Helper HtmlImage
echo $html->image("recipes/6.jpg", array( "alt" => "Brownies", 'url' => ‘/recipes/view/6’ ));
Substitui o código html<a href="/recipes/view/6"> <img src="/img/recipes/6.jpg" alt="Brownies" /> </a>
Imageecho $html->link('Enter', '/pages/home', array('class'=>'button','target'=>'_blank'))
Substitui o código html<a href="/pages/home" class="button" target="_blank">Enter</a>
![Page 53: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/53.jpg)
Helper HtmlOutros métodos do helper do html
charset docType meta style tag div para script url
![Page 54: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/54.jpg)
Helper RSSAntes de mais nada, vc deve adicionar uma
linha em app/config/routes.phpRouter::parseExtensions('rss');
Adicione em app/controllers/posts_controller.phpvar $components = array('RequestHandler');
Modifique o método index de posts:function index(){
if( $this->RequestHandler->isRss() ){ $posts = $this->Post->find('all', array('order' => 'Post.created DESC')); $this->set(compact('posts')); $this->set('channel',array('title'=>'Aula de Cake - Posts'));} else { $this->set('posts', $this->Post->find('all'));}
}
![Page 55: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/55.jpg)
Helper RSS
![Page 56: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/56.jpg)
Helper TimeDeixa um formato date time mais bonito:
nice ( $date ) Tue, Jan 1st 2008, 19:25 niceShort ( $date ) Jan 1st 2008, 19:25
Today, 19:25 timeAgoInWords($date) on 21/01/08
3 months, 3 weeks, 2 days ago 7 minutes ago 2 seconds ago
Vc pode mudar o padrao dessas funcoes em cake/libs/views/helpers/time.php
O recomendado eh que vc salve esse helper na app e modifique lah
![Page 57: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/57.jpg)
Data ValidationUma coisa que vai te ajudar no cake eh validar os
dados antes de add algoA validação eh tratada nos Models, abra o model
do post e ponha o código:var $validate = array(
'title' => array(
'aplhanumeric' => array(
'rule' => array('alphanumeric'),
'message' => 'O titulo soh pode ter numeros e letras’ ), ),
'body' => array(
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => 'Nao deixe o corpo do post em branco’ ), ),
);
![Page 58: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/58.jpg)
Testando a Validation
![Page 59: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/59.jpg)
Tipos de ValidationVc pode colocar expressões regulares na
validação, mas para facilitar sua vida o cake jah tem algumas prontas:
alphaNumeric extension between file blank ip boolean isUnique cc minLength comparison notEmpty date phone decimal postal email url equalTo
![Page 60: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/60.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 61: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/61.jpg)
Preparar o Cake BakePrimeiro temos que alterar a variável de
ambiente PATH, para ela achar o caminho do console e do php
Console eh onde fica o executável cakecake bake eh o camando que vai fazer tudo
por vc$ PATH=$PATH:/home/2005100955/aulacake/cake/console/
$ export PATH
Agora vamos botar o bolo no forno
![Page 62: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/62.jpg)
Bakeando o siteNo terminal, entre na pasta app
$ cd ~/pastaweb/aulacake/app/
Rode o comando:
$ cake bake
Escolha a opção M de modelFaça a mesma coisa para os tres modelsDepois faça para controllers e views
![Page 63: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/63.jpg)
Bakeando o site
Agora acesse o siteTudo esta pronto seguindo um padrão do
cakephpVc pode alterar o padrão do seu jeito, assim vc
acaba de bakear o site e jah tah tudo pronto
![Page 64: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/64.jpg)
Sumario
Banco de DadosO que eh CakePHPInstalando o CakeModels, Controllers e ViewsMais ferramentas do CakePHPCake Bake – a magica do CakePHP
![Page 65: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/65.jpg)
ComponentsOs components provêm varias funcionalidades
que são usadas normalmenteOs components padrões estão na pasta
cake/libs/views/components/ acl auth cookie email requesthandler security session
![Page 66: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/66.jpg)
Components AuthA primeira coisa a ser fazer eh ativar o
componente no controller:var $components = array('Auth');
Para ativar em todos os controllers, basta adicionar essa linha em AppController
Agora todo o seu site esta bloqueado para quem não esta logado
Entao vamos fazer a tela de login
![Page 67: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/67.jpg)
Components AuthNo controller User, crie os dois actions:
login function login () { }
logoutfunction logout (){
$this->redirect($this->Auth->logout());
}
Agora crie o view de loginOBS: logout não precisará de um view
![Page 68: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/68.jpg)
Components AuthArquivo app/views/users/logint.ctp
<?php
echo $session->flash('auth');
echo $form->create('User', array('action' => 'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->end('Login');
?>
![Page 69: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/69.jpg)
Components AuthMas e se eu não quiser que todo o meu site
seja bloqueado para não usersColoque no controller que não queira ser
bloqueado a função beforeFilterDentro de allow coloque as actions que serão
permitidas a visitantesExemplo em app/controllers/users_controller.php
function beforeFilter() {
$this->Auth->allow('add');
}
![Page 70: CakePHP na pratica - suporte.inf.ufes.br · 5 Luis 1976 CSS 90 Novatec ... CakePHP eh um framework para Aplicações Web ... Vamos então criar os nossos models](https://reader034.fdocument.pub/reader034/viewer/2022052314/5be74bb109d3f2db738c251d/html5/thumbnails/70.jpg)
Por ultimo: RotasNo arquivo app/config/routes.php voce pode
remodelar a url do site
Router::connect( '/logar', array('controller' => ‘users', 'action' => 'login') );
Router::connect( '/Comentarios/*', array('controller' => ‘comments', 'action' => ‘index') );
Router::connect( '/Postados/:action/*', array('controller' => ‘posts') );