SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
Desenvolva rapidamente
utilizando o framework
CakePHP

               Elton Luís Minetto
Agenda

    Ambiente Web
•
    PHP
•
    Problemas
•
    Frameworks
•
    CakePHP
•
    Demonstração
•
Ambiente Web

É o ambiente formado por algumas
tecnologias:
• Servidor Web
• Protocolo HTTP e HTTPS
• Navegadores
• HTML, PHP, JSP, CSS, AJAX
• Web sites e sistemas
PHP

    Livre
•
    Fácil de usar
•
    Grande documentação
•
    Grande biblioteca de funções
•
    Orientação a Objeto
•
Problemas Ambiente
   Web/PHP
• Repetição de tarefas
• Dificuldade de debug
• Várias formas de fazer a mesma coisa
• Existem poucos padrões e os que existem não são
cumpridos (W3C x Microsoft)
• Os design patterns foram criados para aplicações
cliente-servidor, somente agora estão sendo portados
para web
• Clientes querem alterar tudo muito rápido
• Desenvolvimento lento
• Pouco reaproveitamento de código
• Não existem ferramentas RAD como Delphi
• Dificuldade de fazer relatórios
• Navegadores não renderizam corretamente algumas
coisas
• Novas tecnologias surgindo a todo minuto
• Mistura de layout e lógica
Problemas Ambiente
Web/PHP
Frameworks
É uma “base” de onde pode-se desenvolver
algo maior ou mais específico. É uma coleção
de códigos, classes, funções, técnicas e
metodologias que facilitam o desenvolvimento
de novos softwares.
Vantagens
    Todos programam parecido graças a
●


padronizações. Fácil manutenção
  Automatiza tarefas repetitivas. DRY
●


   Separação de layout e lógica. no more
●


spaguetti!
  Reaproveitamento de códigos
●
Padrões
Os frameworks são baseados em uma série de
padrões de desenvolvimento já consolidadas:

MVC

MVC é um acrônimo para Model, View, Controller
(Modelo, Visão e Controlador). A idéia é separar todo o
desenvolvimento de uma aplicação nestas três partes,
ou camadas:
• Model – gerencia o comportamento dos dados da
aplicação.
• View – gerencia a saída gráfica e textual da parte da
aplicação visível ao usuário
• Controller – interpreta as entradas de mouse e
teclado do usuário, comandando a Visão e o Modelo
para se alterarem de forma apropriada.
Padrões
ActiveRecord

Este padrão de design facilita a manipulação de dados
contidos    em    uma  base    dados  por   aplicações
desenvolvidas com o paradigma orientados a objetos.
Uma tabela de uma base de dados é vista na forma de
uma classe, enquanto que cada linha da tabela é
considerada um objeto desta classe. Quando um objeto
é   criado,   alterado ou    excluído  esta   ação   é
automaticamente refletida na base de dados. 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.
CakePHP
Cake é um framework para PHP que usa
padrões de desenvolvimento conhecidos como
ActiveRecord e MVC. A idéia principal é ser um
framework estruturado que permita a usuários
PHP de todos os níveis desenvolver aplicações
web rubustas sem perda da flexibilidade.
CakePHP - Vantagens
• Licença flexível (MIT)
• Compatibilidade com PHP4 e PHP5
• Geração de CRUD para interação com BD
• Arquitetura MVC
• Validações
• Templates
• Ferramentas que auxiliam gerar Javascript,
AJAX, forms HTML, etc
• Comunidade ativa
• Funciona em qualquer subdiretório web, com
pouca configuração do Apache.
Conceitos - Diretórios
/ap p - a pl ica çã o
   /c on fi g – a rqu ivo s de co nfi gu raç ão , DB, e tc
   /c on tr oll er s – co nt rol ad ore s da ap li caç ão
   /i nd ex .ph p – p ági na in ic ial d a a pl ic açã o
   /m od el s – m ode los d a a pl ica çã o
   /p lu gi ns
   /t mp – us ad o p ara c ach e e l og s
   /v en do rs – bib lio te cas d e t er cei ro s
   /v ie ws – vi sõe s d a apl ic açã o
       /el eme nt s – e lem ent os , p ed aço s da vi sã o
       /er ror s – p ág ina s d e err os cu st om iza da s
       /he lpe rs – aj uda nte s par a ger ar c ódi go
       /la you ts – ar qui vos d e l ay out
       /pa ges – vi sõ es est át ica s
   /w eb ro ot – Doc ume nt Roo t par a apl ic aç ão
       /cs s – a rqu iv os css
       /fi les – ar qu ivo s c om uns
       /im g – i mag en s
       /js – Ja vas cr ipt s
/ca ke – có dig o fon te do c ake
Requisitos
  Servidor web com as funcionalidades:
sessions, mod_rewrite (não obrigatório mas
aconselhável)
 PHP 4.3.2 ou superior
 Uma base de dados. Atualmente é suportado
MySQL, PostgreSQL, SQLite,ODBC e AdoDB.
Futuramente Oracle (CakePHP 1.2)
Instalação
  Download do arquivo em
http://cakephp.org/downloads
  Descompactar e copiar para o diretório root
do servidor Web. No Ubuntu:

tar x fvj c ake _1 .1. 15. 51 44 .ta r. bz2
mv c ake _1 .1. 15 .51 44 /v ar /ww w/ cak e


   Testar    no   navegador                    no   endereço:
http://localhost/cake
Configuração Apache
É    necessário    duas    configurações:   o
mod_rewrite e o AllowOverride precisam estar
ativos.
Alterar o httpd.conf (apache2.conf no Ubuntu)
e descomentar ou adicionar as linhas :

Loa dM odu le re wr ite _mo du le mo du les /m od_ re wri te .so
Add Mo dul e mod _r ewr ite .c


Adicionar a linha abaixo no DocumentRoot e
reiniciar o Apache:

All ow Ove rr ide a ll
talk is cheap...

...show me the code!
Desenvolvendo

A aplicação

Foi solicitado a criação de um site para
agregar     informações    de    diversas
imobiliárias. Os clientes podem acessar
e visualizar imóveis a venda e se
cadastrar como interessados. Deve
haver uma interface de administração
para     controle     das    informações
cadastradas
Desenvolvendo
O Cake segue algumas regras de
padronização para a base de dados:
  Todas as tabelas devem estar no plural.
●


  A chave primária para todas as tabelas deve ser o
●


campo “id”.
  Para utilizar chave estrangeira, deve possuir
●


nome da tabela no singular acrescido do campo id.
Ex: imovel_id.
  O relacionamento “n-n”, deve ser organizado em
●


ordem alfabética e os nomes devem estar no
plural. Exemplo: livros_usuarios
  Modelos são no singular e controladores no plural
●
Modelagem
Usando o CakePHP

Iniciando a aplicação
O cake possui uma excelente ferramenta
  para geração da aplicação e de várias
  partes de código. A ferramenta chama-se
  bake.
Usando o CakePHP

Criando um projeto:
cd / var /w ww/ ca ke/
ph p cak e/ scr ip ts/ bak e. php - pr oje ct we bi mov ei s

Após responder y para as perguntas, toda a
  estrutura de diretórios é criada.
Depois de criado o projeto é necessário criar
  a aplicação.
Usando o CakePHP

Criando uma aplicação:
ph p cak e/ scr ip ts/ bak e. php - ap p w eb imo ve is
What da ta bas e driv er wo uld yo u li ke to                use?
(mys ql /my sq li/ mss ql /sq li te/ po st gre s/ odb c) –   qual
data ba se. N est e c as o m ys ql
Wha t is th e ho stn am e fo r th e data ba se ser ve r? -
loc al ho st
Wha t is th e dat aba se us er nam e? - im ob ili ar ias
Wha t is th e dat aba se pa ss wor d? - im ob ili ar ias
Wha t is th e nam e of the da ta bas e yo u wil l be
usi ng ? - qu al é a base de dado usa da . Ne ste
exe mp lo    imo bil iar ia s. As ta bel as dev em ser
pre vi am ent e cri ada s.
Usando o CakePHP

En te r a tabl e pre fi x? - caso as ta be las ten ha m
    al gum p ref ix o no s eu n ome . Nes te ca so – n
Lo ok ok ay ? (y/ n)      –   co nf ir mar   com   y   ca so    tudo
    es tej a cor re to

Neste    momento    foram   criadas  as
configurações de conexão com a base de
dados da aplicação. Estas configurações
foram salvas em
/v ar /ww w/ cak e/ web imo ve is/ co nf ig/ da tab as e.p hp

e podem ser alteradas posteriormente.
DICA

Para gerar os modelos o bake irá trabalhar
com os nomes das tabelas no singular. Como
o CakePHP foi desenvolvido em inglês
existem alguns problemas que ocorrem
nessa     transformação.    Por    exemplo,
imobiliarias torna-se imobiliarium. Para
resolver este problema é necessário alterar o
arquivo
we bi mov ei s/c on fig /in fl ect io ns .ph p

e alterar a seguinte linha:
$s in gul ar Rul es = arr ay ('/ ([ ti ])a $/ i' => ' 1a ');
Usando o CakePHP

Executando novamente o bake é solicitado a opção de
   gerar o Modelo, a Visão ou o Controle da
   aplicação.
Gerando o Modelo: O bake conecta na base de dados
  e encontra as tabelas existentes. Você pode
  escolher para qual das tabelas irá criar o modelo.
  Inicialmente vamos escolher a tabela Imobiliarias
  digitando seu número da lista mostrada.
Wo ul d you like to su ppl y va li dat io n cr ite ri a for
    th e fiel ds in you r mod el? (y /n )- se des eja
    fo rne ce r cri tér ios de val ida çã o par a os cam po s
    da tab el a. Nes te caso y. É apr es en tad o cad a um
    do s ca mp os e, de ac or do com se u ti po na tab el a
    é apr es ent ad o alg uma s val id açõ es . Por exem pl o
    o    ca mpo       id    pod e     ser     va li da do para
    VA LID _N OT_ EM PT Y ou V AL ID_ NU MBE R.
Usando o CakePHP

Wo ul d you      lik e to      def in e mo de l as soc ia ti ons
    (h asM an y, ha sOn e, be lon gs To, etc. )? (y /n ) – se
    é ne ces sá rio      defi nir     ass oci aç ões   ent re os
    mo del os . E xi st em q ua tr o a ss oci aç ões :

hasOne: possui um
hasMany: possui muitos
belongsTo: pertence a
hasAndBelongsToMany: tem e pertence a muitos
Escolhendo y o bake vai identificar as associações e
   solicitar confirmação para cada uma delas:
Usando o CakePHP
Im ob ili ar ia ha sOn e I mo ve l? (y /n)
[y ] > n
Im ob ili ar ia ha sOn e U su ar io? ( y/n )
[y ] > n
Im ob ili ar ia ha sMa ny Im ov el? ( y/n )
[y ] > y
Im ob ili ar ia ha sMa ny Us ua rio ? (y/ n)
[y ] > y
Ca ke tes t sui te not in sta ll ed.        Do you      want   to
    ba ke un it te st fil es a nyw ay ? ( y/ n)
[y ] > n – ge ra r a s c la ss es de te st e. Ne ste c aso N
O ar qui vo mo de ls/ imo bi li ari a. php é ge ra do
Usando o CakePHP
Após criar todos os modelos é preciso criar os
  Controle. Executando novamente o comando:
ph p cak e/ scr ip ts/ bak e. ph p - ap p    we bim ov eis
Po ss ibl e    Con tro lle rs  ba sed    on    yo ur         cu rr ent
    da tab as e – e sc olhe r o Imo bi lia ri as
Wo ul d yo u li ke bake        to   bui ld     yo ur   con tr ol ler
    in ter ac ti vel y? - y
Wo ul d you lik e to us e sc af fo ldi ng ? (y /n ) -              se
    qu ere mo s cri ar as te la vi rt uai s de CR UD . N
Wo ul d you      lik e to in cl ude       som e ba si c cl ass
    me tho ds    (i nd ex( ),    add () ,  view () ,  edi t( ))?
    (y /n)     - se qu erem os cri ar as tel as de CRUD
    ex pli ci ta men te . Ne st e cas o Y
Usando o CakePHP
Wo ul d you li ke to cre at e the met ho ds for ad mi n
    ro uti ng ?  (y/ n)    –   se    qu er emo s  cr iar   uma
    in ter fa ce di fe rent e pa ra a adi mi str aç ão . Y
Wo ul d you li ke thi s con tro ll er to us e ot her
    mo del s besi de s 'Im ob ili ar ia '? (y/n ) – se é
    ne ces sá ri o usar mai s de um mod el o. Ne st e cas o
    n
Wo ul d you li ke thi s con tro ll er to us e ot her
    he lpe rs   be sid es   Htm lH elp er    and    Form He lp er?
    (y /n) – se são ne ce ssá ri os ou tr os aj ud an tes
    al ém   do   ger ad or    de    Html    e    For ms.    Va mos
    ut ili za r   o    he lp er   de     Ja vas cr ipt ,    en tão
    di git am os y e depo is J ava sc rip t
Usando o CakePHP
Wo uld    yo u   li ke    th is   co ntr ol ler   to us e  any
    com po ne nts ?   (y /n)    –    se   quer em os uti liz ar
    com po ne nte s adici on ai s. Exe mpl o: ger ad or de
    PDF , Pa gin aç ão, et c
Wo uld you like to us e Se ss ion s? (y/ n) – se
    que re mo s us ar Ses sõ es. Se mp re é imp or tan te
    par a gu ar dar mo s inf or maç õe s, pri nci pa lme nt e de
    val id aç ão de us uár io s.
Ca ke tes t suit e no t ins ta lle d.       Do you wa nt      to
    bak e uni t tes t fi le s any way ? (y /n)         -      se
    que re mo s c ri ar as cl ass es de t est e. N
O ar qui vo cont rol le rs/ im obi li ari as _c ont ro lle r.p hp
   é g er ad o
Usando o CakePHP
E,    finalmente, para gerar a Visão, executar
     novamente o bake, escolher a opção V e o número
     correspondente a Imobiliarias.
Wo ul d you li ke to cre at e som e sca ffo ld ed vi ew s
    (i nde x, add , vie w, ed it ) fo r th is con tr oll er ?
    - ele vai cri ar a vis ão par a os mé to dos
    bá sic os de ins erç ão, excl us ão, etc . Res pon de r
    y
Wo ul d you like to cre at e th e vi ew s fo r ad min
    ro uti ng ?     (y /n )   –     co mo   esc ol hem os    no
    co ntr ol ad or     qu e    que re mos   int erf ac e    de
    ad min is tr açã o deve mo s esc ol her Y ne st a opç ão
Um dir et óri o é cr ia do em vi ew s/i mo bil ia ri as/ com
   di ver so s arq uiv os HT ML , um para cad a açã o do
   co ntr ol ad or.         Exem plo :       in dex .t ht ml,
   ad min _e di t.t ht ml, et c.
Customizando
Os passos anteriores devem ser repetidos para todas
   as tabelas do banco de dados.
Após isto, está criado um “esqueleto” da aplicação.
Agora podemos customizar os códigos gerados para
  criarmos a aplicação final.
Layout
Nosso designer nos mandou o layout do site. Agora
  precisamos colocar este visual nas aplicações
  geradas pelo CakePHP.
Layout
O layout principal das aplicações encontra-se no
  arquivo views/layouts/default.thtml. Mudando
  este      arquivo     podemos        transformar
  automaticamente todas as aplicações geradas.
Os arquivos .css devem ser salvos no diretório
  webroot/css/
Os arquivos .js (Javascript) devem ser salvos no
  diretório webroot/js/
Página inicial
Quando acessamos o link
http://localhost/cake/webimoveis/
iremos redirecionar para a página que lista as
   imobiliárias. Para isso deve-se alterar o arquivo
views/pages/home.thtml
Seu novo conteúdo é:
<? ph p
he ad er( 'l oca ti on: imo bi li ari as ');
?>
Imobiliárias
O controlador imobiliarias_controller.php gerado pelo
   bake possui diversos métodos. Vamos alterá-lo e
   deixar somente o método index() e os métodos
   admin.
O método index() é o responsável por mostrar todas
  as imobiliárias cadastradas e seus imóveis. O
  código deste método é mostrado no próximo slide
Imobiliárias
function index($id=null) {

//busca as imobiliarias

    $thi s->Imo biliar ia->re cursiv e = 0; //não recur sivo. busca
        só a im obiliá ria
    $thi s->set ('imob iliari as',$t his->I mobili aria-> findAl l());
    //bu sca a imobil iaria atual
    if($ id) { //se j á foi seleci onado uma, d eve bu scar t odos
        os dado s
        $this->Imobiliaria->recursive = 2;
        $this->set('atual', $this->Imobiliaria-
           >findAllById($id));
    }
}
Imobiliárias
Além disso é preciso alterar o arquivo
   views/imobiliarias/index.thtml
para mostrar os dados vindos da tabela. Não é
   possível mostrar todo o arquivo no slide mas está
   disponível junto com esta apresentação.
Exemplo de trecho:
<h3><?php echo $atual['0']['Imobiliaria']['nome']?></h3>

<?php echo $atual['0']['Imobiliaria']['endereco']?><br>

<b>Telefone: <?php echo
   $atual['0']['Imobiliaria']['telefone']?></b><br>
Imóveis
Processo semelhante vamos realizar com o cadastro
   de imóveis. Primeiro vamos excluir os métodos
   não necessários do controlador (add, edit, delete),
   deixando somente o index() e os métodos de
   administração. A única alteração necessária no
   método index() é:
$t hi s-> Im ove l- >re cur si ve = 1;

para buscar as fotos do imóvel.
No arquivo de visão do método index (index.thtml)
  devemos alterar para mostrar os dados do imóvel
  e o formulário de cadastro de interessados,
  conforme mostra a imagem
Imóveis
Interessados
Quando o visitante preencher o formulário de
  interessados esta informação será salva na tabela.
  Para isso iremos utilizar os códigos gerados pelo
  bake. Quem fará o salvamento na tabela é o
  interessados_controller.php, no método add().
A única alteração necessária é substituir no método
   add() a linha
$this->redirect('/interessados/index');
por
$this->redirect('/imobiliarias/index');
Assim, quando salvar os dados o usuário será
   redirecionado para a página inicial da aplicação.
Controle de acesso
Quando o usuário clicar na oção Admin na página
  inicial será direcionado a um formulário para fazer
  o login na aplicação.
Para realizar esta tarefa é preciso os seguintes
   passos:
1) Criar o controlador em
   controllers/login_controller.php. Neste arquivo
   deve-se criar os métodos index(para mostrar o
   formulário), valida (para fazer a validação),
   logout(sair do sistema) e menu (para mostrar o
   menu)
2) Criar o diretório views/login/ com os arquivos
   index.thtml e menu.thtml
Controle de acesso
3) Verificar se foi realizado o login no momento do
   acesso da interface de administração. Alterar o
   arquivo app_controller.php. Adicionar o código
   abaixo:
//funcao que é executada antes de qualquer método dos
   controladores

function beforeFilter() {

    if(i sset($ this-> params ['admi n']))   {   //se   foi   acessado   a
        interfa ce de admini straca o
        if(!$this->Session->check('logado')) {
            $this->Session->setFlash('Acesso negado');
            $this->redirect('/login');
        }
    }
}

Estes arquivos alterados estão em anexo a apresentação
Upload das Fotos
Para realizar o upload das fotos é preciso alterar o
   controlador   fotos_controller.php  e   a   visão
   add.thtml. No fotos_controller.php é preciso
   adicionar   o    código   abaixo   no     método
   admin_add():
if(isset($this->data['Foto']['arquivo']['tmp_name'])) {

    //co piando o arq uivo p ara o direto rio fi nal
    copy ($this -
        >data[' Foto'] ['arqu ivo'][ 'tmp_n ame'], quot;/var/ www/xx e/web
        imoveis /webro ot/img /quot;.$th is-
        >data[' Foto'] ['arqu ivo'][ 'name' ]);
    //su bstitu i o ca mpo ar quivo por so mente o nome do ar quivo
    $thi s->dat a['Fot o']['a rquivo '] = $ this-
        >data[' Foto'] ['arqu ivo'][ 'name' ];
}

if($this->Foto->save($this->data)) { ....
Upload das Fotos
E      no    arquivo   views/fotos/admin_add.thtml    é
      necessário alterar o objeto do formulário para um
      tipo “file” e modificar a tag <form> :
...

<form action=quot;<?php echo $html->url('/admin/fotos/add'); ?
   >quot; method=quot;postquot; enctype=quot;multipart/form-dataquot;>

...

<?php echo $html->file('Foto/ arquiv o');?>
Ajax
O Cake possui uma série de Helpers para auxiliar no
   desenvolvimento. Um destes Helpers é o de Ajax.
   Ele usa as bibliotecas JavaScript Prototype e
   script.aculo.us que devem ser copiadas para o
   diretório webroot/js/ da aplicação.
Vamos fazer um pequeno exemplo. Uma pequena
  busca de imóveis usando Ajax.
Primeiro é preciso criar um novo controlador para a
   aplicação. No diretório controllers foi criado um
   novo arquivo, chamado buscas_controller.php:
buscas_controller.php
<?php class BuscasController extends AppController {

     var $name = 'Bus cas'; //nome do co ntrola dor
     var $helpe rs = a rray(' Html',    'Aja x' ); //uso dos he lpers
     var $uses = arra y(quot;Imo velquot;); //ind ica qu al mod elo us ar
     func tion i ndex() { //f uncao da pag ina in icial
     }
     func tion u pdate ()     {
         $consulta = $this->params[quot;formquot;][quot;localizacaoquot;].quot;%quot;;
         $this->set('imovels',$this->Imovel-
            >findAll(quot;Imovel.localizacao LIKE '$consulta'quot;));
         $this->layout   =   quot;ajaxquot; ;   //usar   o   layout   ajax   e   não
            html
     }
}

?>
Ajax
O próximo passo é criar as visões. No diretório views
   deve-se criar um diretório para as views da
   aplicação. Neste caso chamamos de buscas. Os
   arquivos   correspondentes    aos   métodos     do
   controlador foram criados:
index.thtml
update.thtml
index.thtml
<?php echo $html->charsetTag('UTF-8')?>

<?php echo $javascript->link('prototype')?>

<?php echo $javascript-
   >link('scriptaculous.js?load=effects')?>

<?php echo $ajax->form(array('action' => '/buscas/update'),
   'imovel', array('update' => 'resultados')); ?>

<input type=quot;textquot; name=quot;localizacaoquot;>

<input type=quot;submitquot; value=quot;Pesquisarquot;>

<div id=quot;resultadosquot;>   </div>

As     primeiras linhas carregam os arquivos .js
     necessários.   Com o $ajax->form é criado um
     formulário cujo action é a função update. Os
     outros parâmetros são o modelo (imovel) e as
     opções (neste caso está definindo que a função
     update vai alterar a div resultados).
update.thtml
<?php echo $ajax->div('resultados'); ?>

<?php foreach($imovels as $imovel): ?>

<h2><?php echo $imovel['Imovel']['descricao']?> na
   imobiliaria <?php echo
   $imovel['Imobiliaria']['nome']?></h2>

<h3>Detalhes</h3>

Localização:<?php echo $imovel['Imovel']['localizacao']; ?
   ><br>

Quartos:<?php echo $imovel['Imovel']['quartos']; ?><br>

Garagem:<?php echo $imovel['Imovel']['garagem']; ?><br>

Valor:<?php echo $imovel['Imovel']['valor']; ?><br>

<?php endforeach; ?>

<?php echo $ajax->divEnd('resultados'); ?>

Este é o código que irá mostrar os resultados.
Conclusões
Desenvolver   usando     frameworks      facilita   a
  padronização e trabalho em equipe.
Acelera o ciclo de desenvolvimento.
Cake é fácil de aprender.
Cake usa uma estrutura de arquivos prática e simples
Tem um nome legal :-)
Referências
http://www.cakephp.org
http://www.cakephp.com.br
http://bakery.cakephp.org/
http://cakeforge.org/
Atenção!


O próximo slide é
uma    prova   da
cara-de-pau    do
palestrante!
Propaganda
Depoimentos


               Melhor que um
              roundhouse kick!
Depoimentos


              A força sinto nesse livro!
Contato

Elton Luís Minetto
eminetto@gmail.com
http://www.eltonminetto.net

Mais conteúdo relacionado

Semelhante a Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utilizando o framework CakePHP

Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
elliando dias
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
elliando dias
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
RubenManhia
 

Semelhante a Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utilizando o framework CakePHP (20)

Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3
 
Apresentando o CakePHP
Apresentando o CakePHPApresentando o CakePHP
Apresentando o CakePHP
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
ASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVC
 
ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Seminário Drupal São Paulo
Seminário Drupal São PauloSeminário Drupal São Paulo
Seminário Drupal São Paulo
 
Crud
CrudCrud
Crud
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 

Mais de Renato Shirakashi

Sistemas Baseados em Conhecimento
Sistemas Baseados em ConhecimentoSistemas Baseados em Conhecimento
Sistemas Baseados em Conhecimento
Renato Shirakashi
 

Mais de Renato Shirakashi (9)

Direct Labs - 4 erros estratégicos simples que arruinam projetos de criação d...
Direct Labs - 4 erros estratégicos simples que arruinam projetos de criação d...Direct Labs - 4 erros estratégicos simples que arruinam projetos de criação d...
Direct Labs - 4 erros estratégicos simples que arruinam projetos de criação d...
 
Avaliação Heurística
Avaliação HeurísticaAvaliação Heurística
Avaliação Heurística
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
A riqueza das Redes - segundo Yochai Benkler
A riqueza das Redes - segundo Yochai BenklerA riqueza das Redes - segundo Yochai Benkler
A riqueza das Redes - segundo Yochai Benkler
 
Mysql Optimization
Mysql OptimizationMysql Optimization
Mysql Optimization
 
Sistemas de Recomendação
Sistemas de Recomendação Sistemas de Recomendação
Sistemas de Recomendação
 
Sistemas Baseados em Conhecimento
Sistemas Baseados em ConhecimentoSistemas Baseados em Conhecimento
Sistemas Baseados em Conhecimento
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHP
 
Via6 - Assinantes e Minha Rede
Via6 - Assinantes e Minha RedeVia6 - Assinantes e Minha Rede
Via6 - Assinantes e Minha Rede
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (6)

From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfConcurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdf
 
Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdf
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 

Desenvolva rapidamente utilizando o framework Desenvolva rapidamente utilizando o framework CakePHP

  • 1. Desenvolva rapidamente utilizando o framework CakePHP Elton Luís Minetto
  • 2. Agenda Ambiente Web • PHP • Problemas • Frameworks • CakePHP • Demonstração •
  • 3. Ambiente Web É o ambiente formado por algumas tecnologias: • Servidor Web • Protocolo HTTP e HTTPS • Navegadores • HTML, PHP, JSP, CSS, AJAX • Web sites e sistemas
  • 4. PHP Livre • Fácil de usar • Grande documentação • Grande biblioteca de funções • Orientação a Objeto •
  • 5. Problemas Ambiente Web/PHP • Repetição de tarefas • Dificuldade de debug • Várias formas de fazer a mesma coisa • Existem poucos padrões e os que existem não são cumpridos (W3C x Microsoft) • Os design patterns foram criados para aplicações cliente-servidor, somente agora estão sendo portados para web • Clientes querem alterar tudo muito rápido • Desenvolvimento lento • Pouco reaproveitamento de código • Não existem ferramentas RAD como Delphi • Dificuldade de fazer relatórios • Navegadores não renderizam corretamente algumas coisas • Novas tecnologias surgindo a todo minuto • Mistura de layout e lógica
  • 7. Frameworks É uma “base” de onde pode-se desenvolver algo maior ou mais específico. É uma coleção de códigos, classes, funções, técnicas e metodologias que facilitam o desenvolvimento de novos softwares. Vantagens Todos programam parecido graças a ● padronizações. Fácil manutenção Automatiza tarefas repetitivas. DRY ● Separação de layout e lógica. no more ● spaguetti! Reaproveitamento de códigos ●
  • 8. Padrões Os frameworks são baseados em uma série de padrões de desenvolvimento já consolidadas: MVC MVC é um acrônimo para Model, View, Controller (Modelo, Visão e Controlador). A idéia é separar todo o desenvolvimento de uma aplicação nestas três partes, ou camadas: • Model – gerencia o comportamento dos dados da aplicação. • View – gerencia a saída gráfica e textual da parte da aplicação visível ao usuário • Controller – interpreta as entradas de mouse e teclado do usuário, comandando a Visão e o Modelo para se alterarem de forma apropriada.
  • 9. Padrões ActiveRecord Este padrão de design facilita a manipulação de dados contidos em uma base dados por aplicações desenvolvidas com o paradigma orientados a objetos. Uma tabela de uma base de dados é vista na forma de uma classe, enquanto que cada linha da tabela é considerada um objeto desta classe. Quando um objeto é criado, alterado ou excluído esta ação é automaticamente refletida na base de dados. 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.
  • 10. CakePHP Cake é um framework para PHP que usa padrões de desenvolvimento conhecidos como ActiveRecord e MVC. A idéia principal é ser um framework estruturado que permita a usuários PHP de todos os níveis desenvolver aplicações web rubustas sem perda da flexibilidade.
  • 11. CakePHP - Vantagens • Licença flexível (MIT) • Compatibilidade com PHP4 e PHP5 • Geração de CRUD para interação com BD • Arquitetura MVC • Validações • Templates • Ferramentas que auxiliam gerar Javascript, AJAX, forms HTML, etc • Comunidade ativa • Funciona em qualquer subdiretório web, com pouca configuração do Apache.
  • 12. Conceitos - Diretórios /ap p - a pl ica çã o /c on fi g – a rqu ivo s de co nfi gu raç ão , DB, e tc /c on tr oll er s – co nt rol ad ore s da ap li caç ão /i nd ex .ph p – p ági na in ic ial d a a pl ic açã o /m od el s – m ode los d a a pl ica çã o /p lu gi ns /t mp – us ad o p ara c ach e e l og s /v en do rs – bib lio te cas d e t er cei ro s /v ie ws – vi sõe s d a apl ic açã o /el eme nt s – e lem ent os , p ed aço s da vi sã o /er ror s – p ág ina s d e err os cu st om iza da s /he lpe rs – aj uda nte s par a ger ar c ódi go /la you ts – ar qui vos d e l ay out /pa ges – vi sõ es est át ica s /w eb ro ot – Doc ume nt Roo t par a apl ic aç ão /cs s – a rqu iv os css /fi les – ar qu ivo s c om uns /im g – i mag en s /js – Ja vas cr ipt s /ca ke – có dig o fon te do c ake
  • 13. Requisitos Servidor web com as funcionalidades: sessions, mod_rewrite (não obrigatório mas aconselhável) PHP 4.3.2 ou superior Uma base de dados. Atualmente é suportado MySQL, PostgreSQL, SQLite,ODBC e AdoDB. Futuramente Oracle (CakePHP 1.2)
  • 14. Instalação Download do arquivo em http://cakephp.org/downloads Descompactar e copiar para o diretório root do servidor Web. No Ubuntu: tar x fvj c ake _1 .1. 15. 51 44 .ta r. bz2 mv c ake _1 .1. 15 .51 44 /v ar /ww w/ cak e Testar no navegador no endereço: http://localhost/cake
  • 15. Configuração Apache É necessário duas configurações: o mod_rewrite e o AllowOverride precisam estar ativos. Alterar o httpd.conf (apache2.conf no Ubuntu) e descomentar ou adicionar as linhas : Loa dM odu le re wr ite _mo du le mo du les /m od_ re wri te .so Add Mo dul e mod _r ewr ite .c Adicionar a linha abaixo no DocumentRoot e reiniciar o Apache: All ow Ove rr ide a ll
  • 17. Desenvolvendo A aplicação Foi solicitado a criação de um site para agregar informações de diversas imobiliárias. Os clientes podem acessar e visualizar imóveis a venda e se cadastrar como interessados. Deve haver uma interface de administração para controle das informações cadastradas
  • 18. Desenvolvendo O Cake segue algumas regras de padronização para a base de dados: Todas as tabelas devem estar no plural. ● A chave primária para todas as tabelas deve ser o ● campo “id”. Para utilizar chave estrangeira, deve possuir ● nome da tabela no singular acrescido do campo id. Ex: imovel_id. O relacionamento “n-n”, deve ser organizado em ● ordem alfabética e os nomes devem estar no plural. Exemplo: livros_usuarios Modelos são no singular e controladores no plural ●
  • 20. Usando o CakePHP Iniciando a aplicação O cake possui uma excelente ferramenta para geração da aplicação e de várias partes de código. A ferramenta chama-se bake.
  • 21. Usando o CakePHP Criando um projeto: cd / var /w ww/ ca ke/ ph p cak e/ scr ip ts/ bak e. php - pr oje ct we bi mov ei s Após responder y para as perguntas, toda a estrutura de diretórios é criada. Depois de criado o projeto é necessário criar a aplicação.
  • 22. Usando o CakePHP Criando uma aplicação: ph p cak e/ scr ip ts/ bak e. php - ap p w eb imo ve is What da ta bas e driv er wo uld yo u li ke to use? (mys ql /my sq li/ mss ql /sq li te/ po st gre s/ odb c) – qual data ba se. N est e c as o m ys ql Wha t is th e ho stn am e fo r th e data ba se ser ve r? - loc al ho st Wha t is th e dat aba se us er nam e? - im ob ili ar ias Wha t is th e dat aba se pa ss wor d? - im ob ili ar ias Wha t is th e nam e of the da ta bas e yo u wil l be usi ng ? - qu al é a base de dado usa da . Ne ste exe mp lo imo bil iar ia s. As ta bel as dev em ser pre vi am ent e cri ada s.
  • 23. Usando o CakePHP En te r a tabl e pre fi x? - caso as ta be las ten ha m al gum p ref ix o no s eu n ome . Nes te ca so – n Lo ok ok ay ? (y/ n) – co nf ir mar com y ca so tudo es tej a cor re to Neste momento foram criadas as configurações de conexão com a base de dados da aplicação. Estas configurações foram salvas em /v ar /ww w/ cak e/ web imo ve is/ co nf ig/ da tab as e.p hp e podem ser alteradas posteriormente.
  • 24. DICA Para gerar os modelos o bake irá trabalhar com os nomes das tabelas no singular. Como o CakePHP foi desenvolvido em inglês existem alguns problemas que ocorrem nessa transformação. Por exemplo, imobiliarias torna-se imobiliarium. Para resolver este problema é necessário alterar o arquivo we bi mov ei s/c on fig /in fl ect io ns .ph p e alterar a seguinte linha: $s in gul ar Rul es = arr ay ('/ ([ ti ])a $/ i' => ' 1a ');
  • 25. Usando o CakePHP Executando novamente o bake é solicitado a opção de gerar o Modelo, a Visão ou o Controle da aplicação. Gerando o Modelo: O bake conecta na base de dados e encontra as tabelas existentes. Você pode escolher para qual das tabelas irá criar o modelo. Inicialmente vamos escolher a tabela Imobiliarias digitando seu número da lista mostrada. Wo ul d you like to su ppl y va li dat io n cr ite ri a for th e fiel ds in you r mod el? (y /n )- se des eja fo rne ce r cri tér ios de val ida çã o par a os cam po s da tab el a. Nes te caso y. É apr es en tad o cad a um do s ca mp os e, de ac or do com se u ti po na tab el a é apr es ent ad o alg uma s val id açõ es . Por exem pl o o ca mpo id pod e ser va li da do para VA LID _N OT_ EM PT Y ou V AL ID_ NU MBE R.
  • 26. Usando o CakePHP Wo ul d you lik e to def in e mo de l as soc ia ti ons (h asM an y, ha sOn e, be lon gs To, etc. )? (y /n ) – se é ne ces sá rio defi nir ass oci aç ões ent re os mo del os . E xi st em q ua tr o a ss oci aç ões : hasOne: possui um hasMany: possui muitos belongsTo: pertence a hasAndBelongsToMany: tem e pertence a muitos Escolhendo y o bake vai identificar as associações e solicitar confirmação para cada uma delas:
  • 27. Usando o CakePHP Im ob ili ar ia ha sOn e I mo ve l? (y /n) [y ] > n Im ob ili ar ia ha sOn e U su ar io? ( y/n ) [y ] > n Im ob ili ar ia ha sMa ny Im ov el? ( y/n ) [y ] > y Im ob ili ar ia ha sMa ny Us ua rio ? (y/ n) [y ] > y Ca ke tes t sui te not in sta ll ed. Do you want to ba ke un it te st fil es a nyw ay ? ( y/ n) [y ] > n – ge ra r a s c la ss es de te st e. Ne ste c aso N O ar qui vo mo de ls/ imo bi li ari a. php é ge ra do
  • 28. Usando o CakePHP Após criar todos os modelos é preciso criar os Controle. Executando novamente o comando: ph p cak e/ scr ip ts/ bak e. ph p - ap p we bim ov eis Po ss ibl e Con tro lle rs ba sed on yo ur cu rr ent da tab as e – e sc olhe r o Imo bi lia ri as Wo ul d yo u li ke bake to bui ld yo ur con tr ol ler in ter ac ti vel y? - y Wo ul d you lik e to us e sc af fo ldi ng ? (y /n ) - se qu ere mo s cri ar as te la vi rt uai s de CR UD . N Wo ul d you lik e to in cl ude som e ba si c cl ass me tho ds (i nd ex( ), add () , view () , edi t( ))? (y /n) - se qu erem os cri ar as tel as de CRUD ex pli ci ta men te . Ne st e cas o Y
  • 29. Usando o CakePHP Wo ul d you li ke to cre at e the met ho ds for ad mi n ro uti ng ? (y/ n) – se qu er emo s cr iar uma in ter fa ce di fe rent e pa ra a adi mi str aç ão . Y Wo ul d you li ke thi s con tro ll er to us e ot her mo del s besi de s 'Im ob ili ar ia '? (y/n ) – se é ne ces sá ri o usar mai s de um mod el o. Ne st e cas o n Wo ul d you li ke thi s con tro ll er to us e ot her he lpe rs be sid es Htm lH elp er and Form He lp er? (y /n) – se são ne ce ssá ri os ou tr os aj ud an tes al ém do ger ad or de Html e For ms. Va mos ut ili za r o he lp er de Ja vas cr ipt , en tão di git am os y e depo is J ava sc rip t
  • 30. Usando o CakePHP Wo uld yo u li ke th is co ntr ol ler to us e any com po ne nts ? (y /n) – se quer em os uti liz ar com po ne nte s adici on ai s. Exe mpl o: ger ad or de PDF , Pa gin aç ão, et c Wo uld you like to us e Se ss ion s? (y/ n) – se que re mo s us ar Ses sõ es. Se mp re é imp or tan te par a gu ar dar mo s inf or maç õe s, pri nci pa lme nt e de val id aç ão de us uár io s. Ca ke tes t suit e no t ins ta lle d. Do you wa nt to bak e uni t tes t fi le s any way ? (y /n) - se que re mo s c ri ar as cl ass es de t est e. N O ar qui vo cont rol le rs/ im obi li ari as _c ont ro lle r.p hp é g er ad o
  • 31. Usando o CakePHP E, finalmente, para gerar a Visão, executar novamente o bake, escolher a opção V e o número correspondente a Imobiliarias. Wo ul d you li ke to cre at e som e sca ffo ld ed vi ew s (i nde x, add , vie w, ed it ) fo r th is con tr oll er ? - ele vai cri ar a vis ão par a os mé to dos bá sic os de ins erç ão, excl us ão, etc . Res pon de r y Wo ul d you like to cre at e th e vi ew s fo r ad min ro uti ng ? (y /n ) – co mo esc ol hem os no co ntr ol ad or qu e que re mos int erf ac e de ad min is tr açã o deve mo s esc ol her Y ne st a opç ão Um dir et óri o é cr ia do em vi ew s/i mo bil ia ri as/ com di ver so s arq uiv os HT ML , um para cad a açã o do co ntr ol ad or. Exem plo : in dex .t ht ml, ad min _e di t.t ht ml, et c.
  • 32. Customizando Os passos anteriores devem ser repetidos para todas as tabelas do banco de dados. Após isto, está criado um “esqueleto” da aplicação. Agora podemos customizar os códigos gerados para criarmos a aplicação final.
  • 33. Layout Nosso designer nos mandou o layout do site. Agora precisamos colocar este visual nas aplicações geradas pelo CakePHP.
  • 34. Layout O layout principal das aplicações encontra-se no arquivo views/layouts/default.thtml. Mudando este arquivo podemos transformar automaticamente todas as aplicações geradas. Os arquivos .css devem ser salvos no diretório webroot/css/ Os arquivos .js (Javascript) devem ser salvos no diretório webroot/js/
  • 35. Página inicial Quando acessamos o link http://localhost/cake/webimoveis/ iremos redirecionar para a página que lista as imobiliárias. Para isso deve-se alterar o arquivo views/pages/home.thtml Seu novo conteúdo é: <? ph p he ad er( 'l oca ti on: imo bi li ari as '); ?>
  • 36. Imobiliárias O controlador imobiliarias_controller.php gerado pelo bake possui diversos métodos. Vamos alterá-lo e deixar somente o método index() e os métodos admin. O método index() é o responsável por mostrar todas as imobiliárias cadastradas e seus imóveis. O código deste método é mostrado no próximo slide
  • 37. Imobiliárias function index($id=null) { //busca as imobiliarias $thi s->Imo biliar ia->re cursiv e = 0; //não recur sivo. busca só a im obiliá ria $thi s->set ('imob iliari as',$t his->I mobili aria-> findAl l()); //bu sca a imobil iaria atual if($ id) { //se j á foi seleci onado uma, d eve bu scar t odos os dado s $this->Imobiliaria->recursive = 2; $this->set('atual', $this->Imobiliaria- >findAllById($id)); } }
  • 38. Imobiliárias Além disso é preciso alterar o arquivo views/imobiliarias/index.thtml para mostrar os dados vindos da tabela. Não é possível mostrar todo o arquivo no slide mas está disponível junto com esta apresentação. Exemplo de trecho: <h3><?php echo $atual['0']['Imobiliaria']['nome']?></h3> <?php echo $atual['0']['Imobiliaria']['endereco']?><br> <b>Telefone: <?php echo $atual['0']['Imobiliaria']['telefone']?></b><br>
  • 39. Imóveis Processo semelhante vamos realizar com o cadastro de imóveis. Primeiro vamos excluir os métodos não necessários do controlador (add, edit, delete), deixando somente o index() e os métodos de administração. A única alteração necessária no método index() é: $t hi s-> Im ove l- >re cur si ve = 1; para buscar as fotos do imóvel. No arquivo de visão do método index (index.thtml) devemos alterar para mostrar os dados do imóvel e o formulário de cadastro de interessados, conforme mostra a imagem
  • 41. Interessados Quando o visitante preencher o formulário de interessados esta informação será salva na tabela. Para isso iremos utilizar os códigos gerados pelo bake. Quem fará o salvamento na tabela é o interessados_controller.php, no método add(). A única alteração necessária é substituir no método add() a linha $this->redirect('/interessados/index'); por $this->redirect('/imobiliarias/index'); Assim, quando salvar os dados o usuário será redirecionado para a página inicial da aplicação.
  • 42. Controle de acesso Quando o usuário clicar na oção Admin na página inicial será direcionado a um formulário para fazer o login na aplicação. Para realizar esta tarefa é preciso os seguintes passos: 1) Criar o controlador em controllers/login_controller.php. Neste arquivo deve-se criar os métodos index(para mostrar o formulário), valida (para fazer a validação), logout(sair do sistema) e menu (para mostrar o menu) 2) Criar o diretório views/login/ com os arquivos index.thtml e menu.thtml
  • 43. Controle de acesso 3) Verificar se foi realizado o login no momento do acesso da interface de administração. Alterar o arquivo app_controller.php. Adicionar o código abaixo: //funcao que é executada antes de qualquer método dos controladores function beforeFilter() { if(i sset($ this-> params ['admi n'])) { //se foi acessado a interfa ce de admini straca o if(!$this->Session->check('logado')) { $this->Session->setFlash('Acesso negado'); $this->redirect('/login'); } } } Estes arquivos alterados estão em anexo a apresentação
  • 44. Upload das Fotos Para realizar o upload das fotos é preciso alterar o controlador fotos_controller.php e a visão add.thtml. No fotos_controller.php é preciso adicionar o código abaixo no método admin_add(): if(isset($this->data['Foto']['arquivo']['tmp_name'])) { //co piando o arq uivo p ara o direto rio fi nal copy ($this - >data[' Foto'] ['arqu ivo'][ 'tmp_n ame'], quot;/var/ www/xx e/web imoveis /webro ot/img /quot;.$th is- >data[' Foto'] ['arqu ivo'][ 'name' ]); //su bstitu i o ca mpo ar quivo por so mente o nome do ar quivo $thi s->dat a['Fot o']['a rquivo '] = $ this- >data[' Foto'] ['arqu ivo'][ 'name' ]; } if($this->Foto->save($this->data)) { ....
  • 45. Upload das Fotos E no arquivo views/fotos/admin_add.thtml é necessário alterar o objeto do formulário para um tipo “file” e modificar a tag <form> : ... <form action=quot;<?php echo $html->url('/admin/fotos/add'); ? >quot; method=quot;postquot; enctype=quot;multipart/form-dataquot;> ... <?php echo $html->file('Foto/ arquiv o');?>
  • 46. Ajax O Cake possui uma série de Helpers para auxiliar no desenvolvimento. Um destes Helpers é o de Ajax. Ele usa as bibliotecas JavaScript Prototype e script.aculo.us que devem ser copiadas para o diretório webroot/js/ da aplicação. Vamos fazer um pequeno exemplo. Uma pequena busca de imóveis usando Ajax. Primeiro é preciso criar um novo controlador para a aplicação. No diretório controllers foi criado um novo arquivo, chamado buscas_controller.php:
  • 47. buscas_controller.php <?php class BuscasController extends AppController { var $name = 'Bus cas'; //nome do co ntrola dor var $helpe rs = a rray(' Html', 'Aja x' ); //uso dos he lpers var $uses = arra y(quot;Imo velquot;); //ind ica qu al mod elo us ar func tion i ndex() { //f uncao da pag ina in icial } func tion u pdate () { $consulta = $this->params[quot;formquot;][quot;localizacaoquot;].quot;%quot;; $this->set('imovels',$this->Imovel- >findAll(quot;Imovel.localizacao LIKE '$consulta'quot;)); $this->layout = quot;ajaxquot; ; //usar o layout ajax e não html } } ?>
  • 48. Ajax O próximo passo é criar as visões. No diretório views deve-se criar um diretório para as views da aplicação. Neste caso chamamos de buscas. Os arquivos correspondentes aos métodos do controlador foram criados: index.thtml update.thtml
  • 49. index.thtml <?php echo $html->charsetTag('UTF-8')?> <?php echo $javascript->link('prototype')?> <?php echo $javascript- >link('scriptaculous.js?load=effects')?> <?php echo $ajax->form(array('action' => '/buscas/update'), 'imovel', array('update' => 'resultados')); ?> <input type=quot;textquot; name=quot;localizacaoquot;> <input type=quot;submitquot; value=quot;Pesquisarquot;> <div id=quot;resultadosquot;> </div> As primeiras linhas carregam os arquivos .js necessários. Com o $ajax->form é criado um formulário cujo action é a função update. Os outros parâmetros são o modelo (imovel) e as opções (neste caso está definindo que a função update vai alterar a div resultados).
  • 50. update.thtml <?php echo $ajax->div('resultados'); ?> <?php foreach($imovels as $imovel): ?> <h2><?php echo $imovel['Imovel']['descricao']?> na imobiliaria <?php echo $imovel['Imobiliaria']['nome']?></h2> <h3>Detalhes</h3> Localização:<?php echo $imovel['Imovel']['localizacao']; ? ><br> Quartos:<?php echo $imovel['Imovel']['quartos']; ?><br> Garagem:<?php echo $imovel['Imovel']['garagem']; ?><br> Valor:<?php echo $imovel['Imovel']['valor']; ?><br> <?php endforeach; ?> <?php echo $ajax->divEnd('resultados'); ?> Este é o código que irá mostrar os resultados.
  • 51. Conclusões Desenvolver usando frameworks facilita a padronização e trabalho em equipe. Acelera o ciclo de desenvolvimento. Cake é fácil de aprender. Cake usa uma estrutura de arquivos prática e simples Tem um nome legal :-)
  • 53. Atenção! O próximo slide é uma prova da cara-de-pau do palestrante!
  • 55. Depoimentos Melhor que um roundhouse kick!
  • 56. Depoimentos A força sinto nesse livro!