desenvolvimento web com cakephp
DESCRIPTION
TRANSCRIPT
![Page 1: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/1.jpg)
Desenvolvimento Web com CakePHPSérgio VilarDesenvolvedor de Interfaces, Redesoft
![Page 2: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/2.jpg)
Agenda
• Pré-requisitos para este minicurso
• Frameworks
• MVC
• CakePHP
• Mão na massa
![Page 3: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/3.jpg)
Pré-requisitos para este minicurso
• Lógica de programação
• Php Básico
• Computador com Apache e MySQL
• Editor de texto de sua preferência
• Um suco, um toddynho, um café...
![Page 4: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/4.jpg)
Frameworks
![Page 5: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/5.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
![Page 6: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/6.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
![Page 7: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/7.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
• Múltiplos bancos de dados
![Page 8: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/8.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
• Múltiplos bancos de dados
• Cache
![Page 9: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/9.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
• Múltiplos bancos de dados
• Cache
• Templates
![Page 10: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/10.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
• Múltiplos bancos de dados
• Cache
• Templates
• Validação
![Page 11: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/11.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
• Múltiplos bancos de dados
• Cache
• Templates
• Validação
• Login de usuários
![Page 12: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/12.jpg)
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.
• Os Frameworks Php geralmente oferecem uma série de recursos como:
• Múltiplos bancos de dados
• Cache
• Templates
• Validação
• Login de usuários
• Geração de código
![Page 13: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/13.jpg)
Porque usar um Framework?
![Page 14: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/14.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
![Page 15: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/15.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
![Page 16: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/16.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
![Page 17: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/17.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
![Page 18: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/18.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
• Comunidade ativa (Componentes e add-ons à vontade)
![Page 19: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/19.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objeto e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
• Comunidade ativa (Componentes e add-ons à vontade)
• Desenvolvimento simples e ágil (em sua maioria)
![Page 20: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/20.jpg)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objeto e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
• Comunidade ativa (Componentes e add-ons à vontade)
• Desenvolvimento simples e ágil (em sua maioria)
• Evitar a POG (Programação Orientada a Gambiarra)
![Page 21: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/21.jpg)
Principais Frameworks PHP
• Yii
• CodeIgniter
• CakePHP
• Zend
• Symfony
Fonte: phpframeworks.com
![Page 22: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/22.jpg)
MVC
![Page 23: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/23.jpg)
MVC
• Padrão de projetos
![Page 24: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/24.jpg)
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
![Page 25: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/25.jpg)
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Model
Interação com o banco
![Page 26: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/26.jpg)
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Model
View
Interação com o banco
Interface da aplicação
![Page 27: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/27.jpg)
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Model
View Controler
Interação com o banco
Lógica da aplicaçãoInterface da aplicação
![Page 28: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/28.jpg)
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Model
View Controler
Interação com o banco
Lógica da aplicaçãoInterface da aplicação
Como assim, Bial?
![Page 29: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/29.jpg)
MVC
Browser Controler
O Browser envia uma requisição à aplicação
![Page 30: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/30.jpg)
MVC
Browser Controler
O Controller processa a requisicão e consulta a lógica de negócio da aplicação
Model
![Page 31: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/31.jpg)
MVC
Browser Controler
O Model acessa o Banco de Dados e recupera os dados requisitados pelo
Controller
Model
DB
![Page 32: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/32.jpg)
MVC
Browser Controler
O Controller renderiza a View correspondente e apresenta os dados
recuperados
Model
DB
View
![Page 33: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/33.jpg)
MVC, porque usar?
![Page 34: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/34.jpg)
MVC, porque usar?
• Base funcional e organizacional da aplicação
![Page 35: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/35.jpg)
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
![Page 36: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/36.jpg)
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
• Aplicação escalável
![Page 37: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/37.jpg)
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
• Aplicação escalável
• Desenvolvimento em paralelo
![Page 38: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/38.jpg)
CakePHP
![Page 39: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/39.jpg)
O que é o CakePHP?
![Page 40: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/40.jpg)
O que é o CakePHP?
• O CakePHP é um Framework Php que visa o desenvolvimento ágil de aplicações usando os padrões MVC e ORM.
![Page 41: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/41.jpg)
CakePHP: Vantagens
![Page 42: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/42.jpg)
CakePHP: Vantagens
• Compatível com Php 4 e 5
![Page 43: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/43.jpg)
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
![Page 44: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/44.jpg)
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
![Page 45: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/45.jpg)
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite, SQL Server, Oracle, OBDC, Firebird)
![Page 46: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/46.jpg)
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite, SQL Server, Oracle, OBDC, Firebird)
• Componentes nativos para Email, Sessão, Criptografia, Autorização, ACL, etc
![Page 47: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/47.jpg)
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite, SQL Server, Oracle, OBDC, Firebird)
• Componentes nativos para Email, Sessão, Criptografia, Autorização, ACL, etc
• Internacionalização
![Page 48: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/48.jpg)
CakePHP: Instalando
https://github.com/sergiovilar/minicurso-cakephp
![Page 49: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/49.jpg)
CakePHP: Instalando
• CakePHP com login de usuários já desenvolvido, baseado no artigo:http://book.cakephp.org/2.0/pt/tutorials-and-examples/blog-auth-example/auth.html
• O CakePHP também pode ser baixado pelo site oficial:http://cakephp.org
![Page 50: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/50.jpg)
CakePHP: Instalando
• Extraia o .zip e copie para a pasta C:\xampp\htdocs
• Renomeie a pasta para “minicurso-cakephp”
![Page 51: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/51.jpg)
CakePHP: Instalando
• Acesse: http://localhost/phpMyAdmin e crie um banco de dados chamado cake_minicurso
• Abra o arquivo C:\xampp\htdocs\minicurso-cakephp\app\Config\database.php e configure o acesso ao banco de dados:
• Login: root
• Password: (vazia)
• Database: cake_minicurso
![Page 52: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/52.jpg)
CakePHP: Instalando
• Certifique-se de que seu servidor Apache está ligado
• Teste acessando http://localhost/minicurso-cakephp
![Page 53: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/53.jpg)
Mão na massa!
![Page 54: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/54.jpg)
O que vamos fazer?
• Um blog simples onde usuários deslogados poderão acessar a home do blog e as internas dos posts
• Apenas usuários logados poderão cadastrar e editar posts
![Page 55: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/55.jpg)
Configurando o banco
• Importe o arquivo minicurso.sql para o banco de dados na aplicação através do phpMyAdmin
![Page 56: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/56.jpg)
Uma nota sobre Convenções
• O Cake possui Convenção sobre configuração, ou seja, uma série de regras são seguidas para que o desenvolvedor se preocupe apenas com o que realmente importa
![Page 57: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/57.jpg)
Uma nota sobre Convenções
• O Cake possui Convenção sobre configuração, ou seja, uma série de regras são seguidas para que o desenvolvedor se preocupe apenas com o que realmente importa
• O Cake faz o uso de convenções para nomear as tabelas do banco, modelos, controllers e views. Veremos como isso funciona:
![Page 58: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/58.jpg)
Uma nota sobre Convenções
• O Cake possui Convenção sobre configuração, ou seja, uma série de regras são seguidas para que o desenvolvedor se preocupe apenas com o que realmente importa
• O Cake faz o uso de convenções para nomear as tabelas do banco, modelos, controllers e views. Veremos como isso funciona:
• Tabela: posts (sempre no plural)
• Model: Post
• Controller: PostsController
• View: Posts
![Page 59: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/59.jpg)
Criando o primeiro Model
app/Model/Post.php
<?php
class Post extends AppModel { public $name = 'Post';
}
?>
![Page 60: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/60.jpg)
Criando o primeiro Controller
app/Controller/PostsController.php
<?phpclass PostsController extends AppController{!
! var $uses = 'Post';! var $scaffold;
}
?>
![Page 61: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/61.jpg)
Criando o primeiro Controller
app/Controller/PostsController.php
<?phpclass PostsController extends AppController{!
! var $uses = 'Post';! var $scaffold;
}
?>
Model
![Page 62: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/62.jpg)
Criando o primeiro Controller
app/Controller/PostsController.php
<?phpclass PostsController extends AppController{!
! var $uses = 'Post';! var $scaffold;
}
?>
O que é isso?
![Page 63: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/63.jpg)
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-Update-Delete) do nosso Controller
![Page 64: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/64.jpg)
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-Update-Delete) do nosso Controller
• Vantagens:
• É rápido e fácil
• Ótimo para prototipar aplicações
![Page 65: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/65.jpg)
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-Update-Delete) do nosso Controller
• Vantagens:
• É rápido e fácil
• Ótimo para prototipar aplicações
• Desvantagens:
• Não é flexível
• Baixa segurança
![Page 66: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/66.jpg)
Vamos testar?
Acesse http://localhost/minicurso-cakephp/posts/add
ControllerAplicação Método
![Page 67: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/67.jpg)
Vamos testar?
Acesse http://localhost/minicurso-cakephp/posts/add
![Page 68: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/68.jpg)
Então, qualquer um pode cadastrar posts?
Por enquanto sim, vamos adicionar ao nosso PostsController o método que limita o acesso a apenas usuários logados:
![Page 69: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/69.jpg)
Então, qualquer um pode cadastrar posts?
Por enquanto sim, vamos adicionar ao nosso PostsController o método que limita o acesso a apenas usuários logados:
public function beforeFilter() {
parent::beforeFilter();$this->Auth->allow('blog', 'v');
}
![Page 70: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/70.jpg)
Então, qualquer um pode cadastrar posts?
Por enquanto sim, vamos adicionar ao nosso PostsController o método que limita o acesso a apenas usuários logados:
public function beforeFilter() {
parent::beforeFilter();$this->Auth->allow('blog', 'v');
}
“blog” e “v” serão os métodos acessíveis aos visitantes do nosso blog.
![Page 71: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/71.jpg)
Criando o método “blog”
Adicione o método no PostsController:
public function blog(){ ! this->layout = 'blog';
$this->set('posts', $this->Post->find('all'));
}
![Page 72: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/72.jpg)
Criando o método “blog”
Adicione o método no PostsController:
public function blog(){ ! this->layout = 'blog';
$this->set('posts', $this->Post->find('all'));
}
Usa o layout customizado que está em View/Layouts/blog.ctp
![Page 73: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/73.jpg)
Criando o método “blog”
Adicione o método no PostsController:
public function blog(){ ! this->layout = 'blog';
$this->set('posts', $this->Post->find('all'));
}
Busca os posts e os coloca na variável $posts para que a view possa receber.
![Page 74: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/74.jpg)
Criando a view “blog”
app/View/Posts/blog.ctp
<?php foreach($posts as $post): ?>
<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>
<?php endforeach; ?>
![Page 75: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/75.jpg)
Criando a view “blog”
app/View/Posts/blog.ctp
<?php foreach($posts as $post): ?>
<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>
<?php endforeach; ?>
Percorre a array de posts
![Page 76: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/76.jpg)
Criando a view “blog”
app/View/Posts/blog.ctp
<?php foreach($posts as $post): ?>
<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>
<?php endforeach; ?>
Cria um link para a página interna do post
![Page 77: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/77.jpg)
Criando a view “blog”
app/View/Posts/blog.ctp
<?php foreach($posts as $post): ?>
<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>
<?php endforeach; ?>
Acesse:http://localhost/minicurso-cakephp/posts/blog
![Page 78: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/78.jpg)
Criando o método “v”
Adicione o método no PostsController:
public function v($id = null){
$this->layout = 'blog';
$this->Post->id = $id; $this->set('post', $this->Post->read());
}
![Page 79: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/79.jpg)
Criando o método “v”
Adicione o método no PostsController:
public function v($id = null){
$this->layout = 'blog';
$this->Post->id = $id; $this->set('post', $this->Post->read());
}
Recebe a ID do post requisitado
![Page 80: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/80.jpg)
Criando o método “v”
Adicione o método no PostsController:
public function v($id = null){
$this->layout = 'blog';
$this->Post->id = $id; $this->set('post', $this->Post->read());
}
Busca no model e coloca dentro da variável $post
![Page 81: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/81.jpg)
Criando a view “v”
app/View/Posts/v.ctp
<h2><?php echo $post['Post']['titulo']; ?></h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>
Acesse:http://localhost/minicurso-cakephp/posts/blog
![Page 82: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/82.jpg)
Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/blog e teste novamente.
![Page 83: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/83.jpg)
Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/blog e teste novamente.
Os arquivos com todo o código fonte deste minicurso podem ser baixados em:https://github.com/sergiovilar/minicurso-cakephp/archive/desenvolvimento.zip
![Page 84: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/84.jpg)
Exercício
Tomando como base o exemplo do blog, crie um Model, um Controller com CRUD e listagem tomando como base a tabela events.
![Page 85: Desenvolvimento Web com CakePHP](https://reader033.vdocuments.net/reader033/viewer/2022050905/5482919bb07959600c8b482e/html5/thumbnails/85.jpg)
É isso aí, até a pró[email protected]://about.me/vilarhttp://slideshare.net/sergiovilarhttp://github.com/sergiovilar