Slide Aula - Curso CakePHP
-
Upload
rangel-javier -
Category
Technology
-
view
4.619 -
download
0
Transcript of Slide Aula - Curso CakePHP
![Page 1: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/1.jpg)
CakePHP
Tão fácil quanto fazer um bolo!
![Page 2: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/2.jpg)
Roteiro
• Conceitos
• Framework
• MVC
• CakePHP
![Page 3: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/3.jpg)
Quem sou eu...
• Rangel Xavier – 25 anos
• Sistemas de Informação
• Aluno do Mestrado em Eng. de Software
• Design & Desenvolvedor
• J!platform/CSS/HTML
• PHP
![Page 4: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/4.jpg)
O que é?
• O CakePHP é um framework para
desenvolvimento de aplicações e
websites, de forma que os
programadores/desenvolvedores
possam trabalhar simples.
![Page 5: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/5.jpg)
O que é?
• Qualquer programador, seja de qualquer
nível, pode sim, aprender o cakePHP
tranquilamente, pois, além de uma vasta
documentação, o framework é muito bem
organizado. Tudo isso totalmente
gratuito.
![Page 6: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/6.jpg)
História
• Michal Tatarynowicz
• Ano 2005
• Quando Ruby on Rails começou a
ganhar popularidade entre os
desenvolvedores.
• Versão 2.x
![Page 7: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/7.jpg)
Motivos para utilizar
• Ativo e com comunidade amigável;
• Licença flexível;
• Compatibilidade com PHP 4 e PHP 5;
• Integrando funcionalidade CRUD (Create, Read, Update and Delete, ou Criar, Ler, Atualizar e Excluir) para interagir com o banco de dados;
• Aplicações scaffolding;
• Geração de código;
• Arquitetura MVC (Model, View, Controller, ou Modelo, Visões, Controlador);
• Requisições ao expedidor com clareza, URLs personalizáveis e rotas;
![Page 8: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/8.jpg)
Motivos para utilizar
• Validações internas;
• Templates rápidos e flexíveis (Sintaxe PHP e com ajudantes);
• Ajudantes para usar AJAX, JavaScript, HTML, formulários e outros nas visões;
• Componentes de E-mail, Cookie, Segurança, Sessões, Manipulação de Requisições e outros;
• Flexibilidade com cache;
• Internacionalização;
• Funciona em qualquer subdiretório do seu website, com poucas configurações no Apache
![Page 9: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/9.jpg)
O que é aprender?
• Orientação Objeto
• PHP OO
• HTML e CSS
• JS
• Convenções e particularidades do
cakephp
![Page 10: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/10.jpg)
POO Revisal, que tal?
![Page 11: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/11.jpg)
Objetos e Classes
• Objetos reais possuem duas características. Estado e Comportamento. Por exemplo, um cachorro tem nome, raça, idade, tamanho e etc, e existem também comportamentos, como abanar o rabo, latir e “acasalam nas pernas alheias”.
![Page 12: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/12.jpg)
Objetos e Classes
• Exemplo mais simples:
• No objeto lâmpada:
– Estado: Acesa e Apagada
– Comportamento: Ser acesa e ser apagada;
• Então, tudo pode ser um objeto. Concordam?
• A partir de agora, ESTADO = ATRIBUTO e COMPORTAMENTO = MÉTODOS/FUNÇÕES
![Page 13: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/13.jpg)
Objetos e Classes
• Classes são a base ou template para
criação do nosso objeto. Ela define
nossos atributos e nossos métodos
utilizados.
• Vamos criar nossa primeira classe.
![Page 14: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/14.jpg)
Objetos e Classes
• Classe
– Primeiro passo é criarmos nosso arquivo
animal.class.php.
– Iremos criar a Class Animal, com atributos
espécie, raça, nome, cor;
– Iremos também criar o nosso
compartamento, ops! nosso método falar;
5 min
![Page 15: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/15.jpg)
Objetos e Classes
• Objeto
– Agora criaremos o objeto baseado na nossa
classe animal.
– Crie um objeto $animal e inicialize
(chamemos a partir de agora de instanciar).
– Palavra chave: new
5 min
![Page 16: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/16.jpg)
Objetos e Classes
• Voltar para Classe
– Criar nosso método falar();
– Adicionaremos um novo atributo chamado
som, e iremos chama-lo dentro de nosso
método;
– Vamos fazer juntos!
![Page 17: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/17.jpg)
Herança
• O processo de “ramificar” uma classe, chama-se Herança.
• Como assim tio?
• Tenho uma classe Cachaça, com atributos, $teor_alcoolico, $ml e $idade, podemos criar uma classe chamada Uisque, a qual, irá herdar todas as características da classe pai.
• Vamos exemplificar
![Page 18: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/18.jpg)
Esquenta!
• Criar uma Classe Pessoa, com atributos, nome, altura, peso, ano de nascimento;
• Criar os métodos
– calcularIdade();
– calcularIMC();
– IMC = Massa / Altura²
![Page 19: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/19.jpg)
Frameworks de
desenvolvimento
![Page 20: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/20.jpg)
PHP do “tempo do ronca”
• Falta de Padrões;
• Programação Orientada a Gambiarra, tornando o programador “doidim”;
• Qualquer um desenvolvia;
• Linguagem para pequenos projetos;
• Script Kiddies, sobrinhos e “amigos que mexem com informática”
![Page 21: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/21.jpg)
PHP evolução
• OO verdadeiro;
• Padrões em projetos;
• Inúmeros projetos criados,
documentados: FRAMEWORKS!
![Page 22: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/22.jpg)
O que são?
• É uma coleção de códigos-fonte, classes, funções, técnicas e metodologias que facilitam o desenvolvimento de novos softwares
![Page 23: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/23.jpg)
O que são comum
entre eles?
• Ao olharmos atentamente para os
principais frameworks de
desenvolvimento para PHP, podemos
observar que algumas tecnologias e
técnicas são comuns à maioria deles.
![Page 24: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/24.jpg)
Design Patterns
• Padrões de Projetos, são formas já
testadas e documentadas de se resolver
certo tipo de problemas.
![Page 25: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/25.jpg)
Modelo, Controle e
Visão
• O padrão MVC é a separação de lógica e apresentação, sendo que isso favorece o trabalho em equipe.
• Dessa forma, qualquer mudança, por exemplo, na apresentação, teria pouco ou nenhum impacto nas demais camadas da aplicação.
![Page 26: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/26.jpg)
Active Record
• Facilita a manipulação de dados contidos em uma
base de dados por aplicações desenvolvidas com
o paradigma orientadas a objetos.
• Desta forma, não é necessário que o
desenvolvedor conheça uma linguagem de
manipulação de dados como SQL, além de manter
toda a aplicação desenvolvida no paradigma
orientado a objetos.
![Page 27: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/27.jpg)
AJAX
• Existem diversas bibliotecas para se utilizar as
funcionalidades do AJAX em suas aplicações
facilmente. Entre elas, pode-se citar o Dojo e o
Prototype. Alguns frameworks utilizam estas
bibliotecas para facilitar o desenvolvimento de
aplicações. O CakePHP e o Symfony, são
principais neste quesito.
![Page 28: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/28.jpg)
Internacionalização
• É o processo de permitir que seja facilmente
modificada o idioma da interface e de
mensagens da aplicação.
• Para facilitar o desenvolvimento deste tipo de
aplicações, é necessário que o framework
utilizado possua suporte a essa característica.
• A partir do CakePHP 2.x, essa funcionalidade foi
implementada.
![Page 29: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/29.jpg)
Zend Framework Particularidades
![Page 30: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/30.jpg)
Caracteristicas
• Surgiu em 2005;
• Versão atual: 2.0.2 (21 de setembro de 2012);
• Zend Technologies, empresa mantenedora do
PHP;
![Page 31: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/31.jpg)
+ e -
• Segurança;
• Certificação;
• Vários componentes prontos;
• Muitas configurações; (-)
• Arquivo bootstrap manual; (-)
• Curva de aprendizagem alta; (-)
• ORM #fail; (-)
• http://framework.zend.com/
![Page 32: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/32.jpg)
Code Igniter Particularidades
![Page 33: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/33.jpg)
Caracteristicas
• Surgiu em 2006;
• 2.1.1 (20 de junho de 2012);
• Rasmus Lerdorf, aprovou!
![Page 34: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/34.jpg)
+ e -
• Pequeno e Leve;
• Sem tantas configurações;
• Framework mais utilizado;
• 2º lugar no Ranking de Frameworks PHP (Europa);
• Documentação boa;
• ORM #fail; (Data Mapper)
• E muito muito muito mais
![Page 35: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/35.jpg)
Laravel Particularidades
![Page 36: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/36.jpg)
Caracteristicas
• Surgiu em 2011;
• 3.2.7;
• Rasmus Lerdorf, aprovou!
![Page 37: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/37.jpg)
+ e -
• Limpo e Leve;
• Baseado em “Routes”;
• ORM \o/;
• Documentação; (-)
• Material em Português; (-)
• www.laravel.com
![Page 38: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/38.jpg)
Engatinhar Começando a entender nosso
CakePHP
![Page 39: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/39.jpg)
Estrutura de Pastas
cakephp/
/app/
/lib/
/plugins/
/vendors/
![Page 40: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/40.jpg)
Diretório “pai”
/app/
/config – arquivos de configuração. Ex.: DB, Email
/console – onde fica o bake (feito tudo pelo terminal)
/controller – onde fica nossos controladores
/lib – bibliotecas de terceiros
/locale – pasta para colocar arquivos de idioma
/model – onde fica nosso models
/plugins – local de nossos plugins
/test – para colocar nossos testes unitários.
/tmp – os arquivos temporarios/cache/logs.
/vendor – scritps, classes, componentes de terceiros.
/view – arquivos da view
/webroot – arquivos de estilo, javascripts e afins.
![Page 41: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/41.jpg)
Outros conceitos
• Helpers: “Ajudantes”, ele auxiliam a criação de algo dentro da aplicação. Ex.: Formulário, Gerenciamento de Cache, HTML entre outros;
• Cada controller o qual é necessário utilização de algum helper, pode ser informado por meio de uma array $helpers. Veja a sintaxe:
![Page 42: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/42.jpg)
Helpers
class MeuController extends AppController
{
public $helpers = array(‘form’, ‘html’);
}
![Page 43: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/43.jpg)
Helpers Padrões
• CacheHelper
• FormHelper
• HtmlHelper
• JsHelper
• NumberHelper (Número e formatos de moedas)
• Paginator
• RSS
• SessionHelper
• TextHelper (Formação de textos “inteligentes”);
• TimeHelper (Formatação de data e hora)
![Page 44: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/44.jpg)
Scaffolding
• É uma técnica que permite ao
desenvolvedor definir e criar uma
aplicação básica que possa inserir,
selecionar, atualizar e excluir objetos,
inserindo apenas o atributo/objeto
$scaffold em seu controller.
![Page 45: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/45.jpg)
Sintaxe Scaffolding
<?php
class MeuController extends
AppController {
public $scaffold;
}
![Page 46: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/46.jpg)
Componentes
• Componentes (components) são pacotes com funções que são usadas para serem utilizada entre os controllers.
• Se você está querendo copiar e colar coisas entre seus controllers, talvez seja uma boa ideia considerar a possibilidade de empacotar estas funcionalidades em componentes.
![Page 47: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/47.jpg)
Componentes Padrões
O CakePHP também já vem com uma quantidade fantástica de componentes incluídos, que você pode usar para lhe ajudar com:
• Segurança
• Sessões
• Lista de Controle de Acesso (do inglês ACL, Access control lists)
• Emails
• Cookies
• Autenticação
• Tratamento de Requisições
![Page 48: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/48.jpg)
Requisições (URLs)
http://localhost/controller/function/param
entro
Exemplo real:
http://localhost/usuarios/deletar/2/
![Page 49: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/49.jpg)
Teste
![Page 50: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/50.jpg)
Verdadeiro ou Falso
• O Helpers auxiliam o desenvolvedor na criação de Sessões e manipulação no BD;
• Os componentes são conjunto de códigos que são utilizados várias vezes entre os Controllers;
• O diretório principal do CakePHP é o lib;
• O scaffolding faz uma simulação automática de minha aplicação;
![Page 51: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/51.jpg)
Verdadeiro ou Falso
• O Helpers auxiliam o desenvolvedor na criação de Sessões e manipulação no BD;
• Os componentes são conjunto de códigos que são utilizados várias vezes entre os Controllers;
• O diretório principal do CakePHP é o lib;
• O scaffolding faz uma simulação automática de minha aplicação;
![Page 52: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/52.jpg)
Camada “C”
Controller
![Page 53: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/53.jpg)
Controllers
• Os controllers fornecem uma série de métodos que são chamados de ações. Ações são métodos em um controller que manipulam requisições. Por padrão, todos os métodos públicos em um controller são ações e acessíveis por urls.
![Page 54: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/54.jpg)
Controllers
• A classe AppController é a mãe de todos os outros controllers da sua aplicação. O próprio AppController é estendida da classe Controller que faz parte da biblioteca do CakePHP.
• Todos seus controllers devem ser estendida desta.
![Page 55: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/55.jpg)
Controllers
<?php
class MeuController extends AppController{
}
![Page 56: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/56.jpg)
Controllers
• Convenção:
<?php
class NomeDoSeuControllerEmCamelCase extends AppController{
}
![Page 57: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/57.jpg)
Controllers
• Atributos:
$name O atributo deve ser definido com o nome do controller.
Normalmente é apenas a forma plural do nome do model principal
que o controller usa. Esta propriedade não é requerida mas salva o
CakePHP de ter que flexionar o nome do model para chegar no
valor correto.
![Page 58: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/58.jpg)
Controllers
$this->set Enviar atributo para view;
Sintaxe
$this->set(‘atributo’, ‘conteúdo do atributo’);
![Page 59: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/59.jpg)
Controllers
save(“dados_a_serem_salvos_no_db”) Salva dados no banco;
Sintaxe
$this->MyModel->save($this->data);
![Page 60: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/60.jpg)
Controllers
delete(“dados_a_serem_deletados_no_db”) Deleta dados do banco;
Sintaxe
$this->MyModel->delete($id);
![Page 61: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/61.jpg)
Controllers
redirect() Controle de Fluxo e redirecionamento de páginas;
Sintaxe
$this->redirect(array(‘controller’ => ‘usuario’))
![Page 62: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/62.jpg)
Camada “V”
Views
![Page 63: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/63.jpg)
Views
• A camada responsável pela visualização
da interface. Aqui ficará nosso HTML e o
mínimo de PHP possível.
• 90% HTML e 10% PHP;
![Page 64: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/64.jpg)
Views
• Para cada controller, é necessário criar
um diretório com o seu nome do e
dentro dela os arquivos com os nomes
de cada ação.
• Certinho?
![Page 65: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/65.jpg)
Views - Exemplo
• Existe um Controller chamado Alunos, e neste controller existe uma ação inserirnota() e calcularmedia();
• Irei criar uma pasta dentro de /Views/ com o nome do Controller, Alunos, e dentro dessa pasta, cada ação do Controller, ganhará um arquivo específico com a extensão .ctp;
• Ficando desta maneira
![Page 66: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/66.jpg)
Views
![Page 67: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/67.jpg)
Camada “M”
Models
![Page 68: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/68.jpg)
Models
• Os models (modelos) formam o coração
de sua aplicação. Tratam das validações,
armazenamento e recuperação dos seus
dados
![Page 69: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/69.jpg)
Models
• Nossa Model deve ser no singular
herdando de AppModel. Se nosso
Controller chama Alunos, nossa model
irá se chamar Aluno.
![Page 70: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/70.jpg)
CVM ops! MVC
• Controller camada de Negócios;
• View camada de Visualização;
• Model camada de Persistência;
• Dramatização!
![Page 71: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/71.jpg)
Baixando o CakePHP
• Acessar o site oficial do
http://cakephp.org/
• Pelo GitHub
https://github.com/cakephp/cakephp/zi
pball/2.2.3
![Page 72: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/72.jpg)
Descompactar
• Descompacte o arquivo dentro do
servidor local.
• Renomear a pasta para /projetocake
10 min
![Page 73: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/73.jpg)
Configuração
• Gerar outro novo código de segurança, nosso atributo security.salt no arquivo config/core.php
• Para simular um projeto real, iremos gerar uma chave segura.
• http://www.md5encrypter.com/
• Gerar outro código para o security. cipherSeed.
![Page 74: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/74.jpg)
Configuração BD
• Próximo passo é configurar o banco de
dados. No nosso arquivo
database.php.default
• Precisamos criar nosso banco de dados
e nossa tabela.
• Veja:
![Page 75: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/75.jpg)
Banco de Dados
• Padrão das tabelas, sempre no PLURAL.
• Nome do Banco: projetocake
• Nome da Tabela: Noticias
• Campos: id, titulo, conteudo, autor,
created e modified
![Page 76: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/76.jpg)
Revisão
• Tabelas do Banco: Plural
• Model: Singular
• Controller: Plural seguido o nome
Controller;
![Page 77: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/77.jpg)
Teste
![Page 78: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/78.jpg)
Pergunta 01
• Quem é o responsável pela comunicação
dos dados com o Banco?
a) View
b) Database
c) Model
d) DataMapper
![Page 79: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/79.jpg)
Verdadeiro ou Falso
• Para cada método do meu Controller, é necessário criar um arquivo .ctp dentro da pasta com o nome de meu Controller;
• Models são no singular e as tabelas no banco de dados;
• As validações são feita no Controller
• As views é a parte da aplicação onde fica mais código PHP.
![Page 80: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/80.jpg)
Verdadeiro ou Falso
• Para cada método do meu Controller, é necessário criar um arquivo .ctp dentro da pasta com o nome de meu Controller;
• Models são no singular e as tabelas no banco de dados;
• As validações são feita no Controller;
• As views é a parte da aplicação onde fica mais código PHP;
![Page 81: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/81.jpg)
Meu 1º Controller
![Page 82: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/82.jpg)
Meu 1º Controller
• Criar um arquivo NoticiasController.php
• Criar Class com o mesmo nome do
arquivo;
• Fazer a herança;
• Inicializar o atributo $name;
Tempo: 15 min
![Page 83: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/83.jpg)
Meu 1º Controller
• Vamos utilizar na prática agora no
Scaffolding;
• Para isto basta inicializar nosso atributo
public $scaffold;
• Vamos olhar a mágica!
![Page 84: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/84.jpg)
Meu 1º Controller
• Por padrão, o cakePHP busca o método
index();
• Então criaremos o método index();
• Outro erro? Por que?
• Criamos o nosso arquivo index.ctp em
nossa view.
![Page 85: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/85.jpg)
Meu 1º Controller
• Enviar um atributo conteúdo um valor,
por exemplo, “Todos as noticias”.
• Para isso, basta utilizar a função set(),
visto anteriormente;
$this->set(‘atributo’, ‘valor’);
Tempo: 15 min
![Page 86: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/86.jpg)
Minha 1ª view
• Vamos colocar apenas um titulo em html
e “echoar” o nome de nossa variável,
que enviamos para nossa view.
Funcionou?
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
![Page 87: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/87.jpg)
Minha 1ª Model
• Essa é com vocês!
• Como cria uma model?
• Singular ou Plural?
• Herda de quem?
Tempo: 15 min
![Page 88: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/88.jpg)
Inserir dados
Inserir dados direto no banco, para
testarmos nossa capturar de dados;
Entre no seu SGBD e coloquem textos
fictícios em nossos campos;
Tempo: 10 min
![Page 89: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/89.jpg)
Capturar dados
• Para capturar os dados do banco
utilizando find();
$this->Model->find(‘all’);
![Page 90: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/90.jpg)
Find()
• O método find() captura os dados da
base;
• Os parâmetros possíveis para esse
método são:
'all', 'first','count', 'list', 'neighbors' or 'thr
eaded'
![Page 91: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/91.jpg)
Find(‘all’)
• Esse método retorna para nossa view os
dados do banco em forma de array.
![Page 92: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/92.jpg)
Editar a view
var_dump($array);
Essa função exibe a estrutura/conteudo de
um array.
Vamos utilizar essa função em nossa view.
![Page 93: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/93.jpg)
Editar a view
<table>
<tr>
<td>ID</td>
<td>Titulo</td>
<td>Data</td>
<td>Ações</td>
</tr>
<?php foreach ($noticias as $noticia) { ?>
<tr>
<td><?php echo $noticia[‘Noticia']['id'];?></td>
<td><?php echo $noticia[‘Noticia'][‘titulo'];?></td>
<td><?php echo $noticia[‘Noticia'][‘data'];?></td>
<td></td>
</tr>
<?php }?>
</table>
![Page 94: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/94.jpg)
Index Finalizado
• Com isso finalizamos nosso primeiro método!
• Criamos o método index();
• Criamos o arquivo index.ctp;
• Enviamos para a view todos os dados do banco;
• Editamos o layout da View;
![Page 95: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/95.jpg)
Método delete()
• O que vamos utilizar?
– Passar por parâmetro da função o id ao qual
quer deletar. Se existir, utilize o método
$this->Model->delete($id);
– Nada na view;
Tempo: 20 min
![Page 96: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/96.jpg)
Método adicionar()
• Missão agora é criar nosso método
adicionar().
![Page 97: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/97.jpg)
Método adicionar()
• O que vamos utilizar?
– $this->Model->save($this->data);
– $this->data; • É um array contendo os dados enviado da view, via
POST ou GET.
– Vamos utilizar nosso primeiro Helper, para criar nosso Formulário na camada View, no arquivo adicionar.ctp;
![Page 98: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/98.jpg)
FormHelper
FormHelper::create(string $model = null, array $options = array());
É o método para iniciar a criação do nosso formulário. Ele que criará o cabeçalho de nosso formulário. Podemos definir o method, action e name do formulário. Por padrão o method é POST;
![Page 99: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/99.jpg)
FormHelper
<?php echo $this->Form->create('User', array('action' => 'login')); ?>
Saida:
<form id="UserLoginForm" method="post" action="/users/login">
![Page 100: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/100.jpg)
FormHelper
• Para cada campo do nosso formulários,
os “inputs” é o FormHelper oferece um
método simples para isso.
echo $this->Form->input(‘campo',
array('label' => ‘Minha Label'));
![Page 101: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/101.jpg)
FormHelper
<?php echo $this->Form->end('Finish'); ?>
Saída:
<div class="submit"> <input type="submit"
value="Finish" /> </div> </form>
![Page 102: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/102.jpg)
Criar view adicionar
Vocês vão criar todos os campos que
desejamos no Formulário de Adicionar,
utilizando o FormHelper e em seguida
iremos testar nossa aplicação.
Tempo: 30 min
![Page 103: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/103.jpg)
SetFlash
Para uma mensagem de alerta nos controllers, o Componente Session nos da um método para isto. O método SetFlash.
$this->Session->SetFlash(‘Mensagem’);
![Page 104: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/104.jpg)
Redirect
Para redirecionarmos de um controller para outro, o CakePHP nos disponibiliza um método para isto.
$this->redirect(array(‘action’=>’pra onde vai’))
![Page 105: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/105.jpg)
HtmlHelper
O CakePHP também disponibiliza um
Helper para o HTML dentro de nossas
views, veremos agora alguns métodos
utilizado.
![Page 106: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/106.jpg)
HtmlHelper
HtmlHelper::image(string $path, array $options = array())
Parameters:
$path (string) – Path to the image.
$options (array) – An array of html attributes.
Exemplo:
echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP'));
Saida:
<img src="/img/cake_logo.png" alt="CakePHP" />
O caminho padrão das imagens é o: /app/webroot/img/.:
![Page 107: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/107.jpg)
HtmlHelper
HtmlHelper::link(string $title, mixed $url = null, array $options = array(), string $confirmMessage = false)
Parameters:
$title (string) – O texto a ser exibido;
$url (mixed) – Para onde será enviado;
$options (array) – An array of html attributes.
Exemplo:
echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank'));
Saida:
<a href="/pages/home" class="button" target="_blank">Enter</a>
![Page 108: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/108.jpg)
Método view()
public function view($id = null) {
$this->Model->id = $id;
$this->set(‘atributo', $this->Model->read());
}
![Page 109: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/109.jpg)
View.ctp
<h1><?php echo $atributo['Model']['titulo']?></h1>
<p><small>Created: <?php echo $atributo['Model']['created']?></small></p>
<p><?php echo $atributo['Model']['conteudo']?></p>
![Page 110: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/110.jpg)
Exercício
Método Listar, para exibir o conteúdo.
$titulo
Feito por: $autor
$conteudo
$data
<tr>
http://localhost/noticias/listarNoticias
Titulo deve apostar para o método View
Tempo: 40 min
![Page 111: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/111.jpg)
Exercício
Criar uma calculadora, com métodos
somar, subtrair, dividir e multiplicar,
passando os valores apenas pela URL.
![Page 112: Slide Aula - Curso CakePHP](https://reader031.fdocuments.net/reader031/viewer/2022020101/557117b4d8b42ad3138b4eba/html5/thumbnails/112.jpg)
Exercício
Criar uma calculadora, com métodos
somar, subtrair, dividir e multiplicar,
passando os valores apenas pela URL,
utilizando o FormHelper