CakePHP Vantagens x Desvantagens
Laura Lopes <ul><li>Formada em Publicidade e Propaganda pela PUC, também estudou Ciência da Computação na UFRGS. </li></ul...
Tópicos <ul><li>O que é o CakePHP </li></ul><ul><li>Conceitos básicos </li></ul><ul><li>Vantagens </li></ul><ul><li>Desvan...
O que é o CakePHP
O que é o CakePHP <ul><li>CakePHP é um framework open source de desenvolvimento para PHP. </li></ul><ul><li>Possibilita ao...
O que é o CakePHP <ul><li>CakePHP é um framework que usa padrões de desenvolvimento conhecidos como  ActiveRecord  e  MVC ...
Conceitos básicos
Design Patterns <ul><li>Os padrões de projeto são muito úteis para resolver problemas de modelagem de projetos se usados d...
Design Patterns <ul><li>O padrão de modelo MVC, que é o mais utilizado em arquituras web, tem por objetivo básico separar ...
O Modelo MVC Model View Controller <ul><li>O modelo de três camadas fisícas (3-tier) divide um aplicativo de modo que a ló...
MVC <ul><li>Modelo : gerencia os dados da aplicação </li></ul><ul><li>Visão : gerencia a saída gráfica e textual da parte ...
MVC
Vantagens
Vantagens <ul><li>Independência entre os componentes; </li></ul><ul><li>eficiência; </li></ul><ul><li>escalabilidade; </li...
Desvantagens
Desvantagens <ul><li>Requer uma quantidade maior de tempo para analisar e modelar o sistema; </li></ul><ul><li>Requer pess...
Requisitos
Requisitos <ul><li>Servidor HTTP. </li></ul><ul><li>Apache com mod_rewrite. </li></ul><ul><li>PHP 4.3.2 ou superior. </li>...
Instalação
Preparando a instalação <ul><li>CakePHP é rápido e fácil de instalar. Vamos focar na configuração com Apache (porque ele é...
Apache e PHP <ul><li>Existem maneiras simples de instalar o apache e o PHP no seu computador. </li></ul><ul><li>Eu uso o X...
Baixando o CakePHP <ul><li>Há duas maneiras de pegar uma cópia do CakePHP, Primeiro: você pode baixar o arquivo (zip/tar.g...
Permissões <ul><li>O CakePHP usa o diretório /app/tmp para diversas operações. </li></ul><ul><li>Exemplos: </li></ul><ul><...
Instalação <ul><li>No Windows: </li></ul><ul><ul><li>Descompacte o arquivo em uma pasta cake na raiz do seu servidor web. ...
Configuração
Primeiro acesso
Apache and mod_rewrite (and .htaccess) <ul><li>Caso o arquivo de estilos não tenha aparecido, você precisa configurar o ar...
Configuração Apache <ul><li>É necessário duas configurações: o mod_rewrite e o AllowOverride precisam estar ativos. </li><...
mod_rewrite <ul><li>Tenha certeza de que está carregando o mod_rewrite corretamente. </li></ul><ul><li>Você deve encontrar...
Ajuste do código de segurança <ul><li>Trocar o valor de 'Security.salt' no arquivo app/config/core.php para um valor espec...
Alterações de língua <ul><li>Arquivo core.php (appconfigcore.php) </li></ul><ul><li>Configure::write('App.encoding', 'ISO-...
Configuração do banco de dados <ul><li>Altere o arquivo: /app/config/database.php.default para database.php. </li></ul><ul...
Tudo verde!
Favicon <ul><li>Arquivo favicon.ico na pasta: appwebrootfavicon.ico </li></ul><ul><li>Antes: </li></ul><ul><li>Depois: </l...
Diretórios <ul><li>/app - aplicação </li></ul><ul><ul><li>/config – arquivos de configuração, DB, etc </li></ul></ul><ul><...
Aplicação de exemplo
Desenvolvendo a aplicação <ul><li>Um professor gostaria de uma aplicação web simples para manter-se informado sobre os liv...
A modelagem
Padronização e não configuração <ul><li>O CakePHP segue algumas regras de padronização para a base de dados: </li></ul><ul...
Modelagem Adaptada
Criando o banco <ul><li>Após fazer a modelagem, acesse o banco e carregue o SQL de criação do banco. </li></ul><ul><li>Con...
Configurações <ul><li>Faça as configurações necessárias. </li></ul>
Iniciando a aplicação <ul><li>O cake possui uma excelente ferramenta para geração da aplicação e de várias partes de códig...
Adicionando o Bake ao path do Windows <ul><li>Considerando o uso do XAMPP </li></ul><ul><li>Windows XP: </li></ul><ul><li>...
Bake <ul><li>No windows, clique no menu iniciar e no executar digite CMD </li></ul><ul><li>No  Prompt de comando do Window...
Bake <ul><li>Escolha a letra P </li></ul><ul><li>Para a pergunta: What is the full path for this app including the app dir...
http://localhost/livros/
Configuração do Banco de Dados <ul><li>Escolha agora a letra D </li></ul><ul><li>Para a configuração padrão, vá deixando t...
Banco de Dados <ul><li>Confirme suas escolhas </li></ul>
Possíveis erros <ul><li>Neste ponto, houve um erro no prompt de comando e o Bake foi fechado. </li></ul><ul><li>Ao menos a...
Erro fatal <ul><li>Se der erro, o bake encerra e não pode ser chamado novamente da mesma maneira. </li></ul><ul><li>Use o ...
Model <ul><li>cake bake -app C:xampphtdocslivros </li></ul><ul><li>What would you like to Bake? (D/M/V/C/P/Q) </li></ul><u...
Validação de Campos <ul><li>Se deseja fornecer critérios de validação para os campos da tabela, escolha y para a pergunta:...
Associações <ul><li>É necessário definir associações entre os modelos. </li></ul><ul><li>Would you like to define model as...
Modelo para Usuarios <ul><li>What would you like to Bake? (D/M/V/C/P/Q) </li></ul><ul><li>> M </li></ul><ul><li>Possible M...
Validação dos campos <ul><li>Escolha as opções: id: 29 nome: 20 email: 10 senha: 29 tipo_user: 29 classe_user: 29 </li></u...
Modelo para LivroUsuarios <ul><li>Possible Models based on your current database: </li></ul><ul><li>1. LivroUsuario </li><...
Associações <ul><li>LivroUsuario belongsTo Usuario? (y/n) – y </li></ul><ul><li>LivroUsuario belongsTo Livro? (y/n) - y </...
Criação dos Controles <ul><li>--------------------------------------------------------------- </li></ul><ul><li>Interactiv...
<ul><li>Faça o mesmo para os 3 itens: </li></ul><ul><li>Would you like to build your controller interactively? (y/n) </li>...
Criação das Visões <ul><li>Faça o mesmo para os 3 itens: </li></ul><ul><li>Would you like to create some scaffolded views ...
Movendo os arquivos criados <ul><li>Se o Bake não criou estes arquivos no local certo, você deve movê-los. </li></ul><ul><...
Movendo os arquivos criados <ul><li>Acesse:  C:xampphtdocscakeappcontrollers  </li></ul><ul><li>Selecione os três arquivos...
Movendo os arquivos criados <ul><li>Acesse:  C:xampphtdocscakeappviews </li></ul><ul><li>Selecione as três pastas: </li></...
Baked <ul><li>Nossa aplicação foi preparada. </li></ul><ul><li>Acesse: </li></ul><ul><ul><li>http://localhost/livros/livro...
Caminho Principal <ul><li>Agora vamos redirecionar a aplicação para apontar para a página que você deseja que seja a princ...
Dados <ul><li>Vamos cadastrar alguns dados... </li></ul>
Customizando <ul><li>Abra, por exemplo, o arquivo:  C:xampphtdocslivrosviewslivro_usuariosindex.ctp </li></ul><ul><li>Vamo...
Customizando <ul><li>Na linha 6, troque:   'format' => __('Page %page% of %pages%, showing %current% records out of %count...
Customizando <ul><li>Na visão de adição de empréstimos aparece o código do aluno e o código do livro. </li></ul><ul><li>Va...
Página de Cadastro <ul><li>No arquivos de controle gerados pelo bake, após salvar um novo dado, ele sai da página principa...
Ajax <ul><li>O Cake possui uma série de Helpers para auxiliar no desenvolvimento. </li></ul><ul><li>Um destes Helpers é o ...
Exemplo <ul><li>Vamos fazer um pequeno exemplo. </li></ul><ul><li>Uma pequena busca de livros usando Ajax. </li></ul><ul><...
<ul><li><?php </li></ul><ul><li>class BuscasController extends AppController { </li></ul><ul><li>var $name = 'Buscas'; //n...
Visões <ul><li>O próximo passo é criar as visões. </li></ul><ul><li>No diretório views deve-se criar um diretório para as ...
index.ctp <ul><li><?php echo $javascript->link('prototype')?> </li></ul><ul><li><?php echo $javascript->link('scriptaculou...
update.ctp <ul><li><?php echo $ajax->div('resultados'); ?> </li></ul><ul><li><?php </li></ul><ul><li>foreach($livros as $l...
Conclusões <ul><li>Desenvolver usando frameworks facilita a padronização e trabalho em equipe. </li></ul><ul><li>Acelera o...
Obrigada. Laura Lopes [email_address] http://www.lauralopes.com.br
Upcoming SlideShare
Loading in …5
×

Cake Php

9,548 views

Published on

Workshop de CakePHP que ministrei na TargetTrust em Porto ALegre/RS.

Published in: Technology
0 Comments
25 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,548
On SlideShare
0
From Embeds
0
Number of Embeds
88
Actions
Shares
0
Downloads
0
Comments
0
Likes
25
Embeds 0
No embeds

No notes for slide

Cake Php

  1. 1. CakePHP Vantagens x Desvantagens
  2. 2. Laura Lopes <ul><li>Formada em Publicidade e Propaganda pela PUC, também estudou Ciência da Computação na UFRGS. </li></ul><ul><li>Trabalha com web comercialmente desde 1996. </li></ul><ul><li>Já trabalhou em diversos provedores de Internet e agências web e hoje tem sua própria empresa, onde trabalha com treinamento e consultoria em sites e sistemas. </li></ul><ul><li>É instrutora na TargetTrust desde novembro de 2006. </li></ul><ul><li>E-mail: lauralopes@targettrust.com.br. </li></ul>
  3. 3. Tópicos <ul><li>O que é o CakePHP </li></ul><ul><li>Conceitos básicos </li></ul><ul><li>Vantagens </li></ul><ul><li>Desvantagens </li></ul><ul><li>Requisitos </li></ul><ul><li>Instalação </li></ul><ul><li>Configuração </li></ul><ul><li>Aplicação de exemplo </li></ul>
  4. 4. O que é o CakePHP
  5. 5. O que é o CakePHP <ul><li>CakePHP é um framework open source de desenvolvimento para PHP. </li></ul><ul><li>Possibilita aos programadores PHP de todos os níveis desenvolverem aplicações robustas rapidamente. </li></ul><ul><li>Usando convenções ao invés de configurações, reduz o custo do desenvolvimento e ajuda os desenvolvedores a escreverem menos código. </li></ul>
  6. 6. O que é o CakePHP <ul><li>CakePHP é um framework que usa padrões de desenvolvimento conhecidos como ActiveRecord e MVC . </li></ul><ul><li>A idéia principal é ser um framework estruturado que permita a usuários PHP de todos os níveis desenvolver aplicações web robustas sem perda da flexibilidade. </li></ul>
  7. 7. Conceitos básicos
  8. 8. Design Patterns <ul><li>Os padrões de projeto são muito úteis para resolver problemas de modelagem de projetos se usados de forma adequada. </li></ul><ul><li>Padrões de projetos são soluções para problemas que alguém um dia teve e resolveu aplicando um modelo que foi documentado e que você pode adaptar integralmente ou de acordo com necessidade de sua solução. </li></ul>
  9. 9. Design Patterns <ul><li>O padrão de modelo MVC, que é o mais utilizado em arquituras web, tem por objetivo básico separar a lógica de negócio da apresentação. </li></ul><ul><li>O grande desafio das equipes de desenvolvimento de aplicações é cada vez mais produzir aplicativos seguros, eficientes, de fácil manutenção, reutilizáveis e em prazos cada vez menores. </li></ul>
  10. 10. O Modelo MVC Model View Controller <ul><li>O modelo de três camadas fisícas (3-tier) divide um aplicativo de modo que a lógica de negócio resida no meio das três camadas físicas. </li></ul><ul><li>Isto é chamado de camada física intermediária ou camada física de negócios. </li></ul><ul><li>A maior parte do código escrito reside na camada de apresentação e de negócio. </li></ul>
  11. 11. MVC <ul><li>Modelo : gerencia os dados da aplicação </li></ul><ul><li>Visão : gerencia a saída gráfica e textual da parte da aplicação visível ao usuário </li></ul><ul><li>Controle : interpreta as entradas de mouse e teclado do usuário, comandando a Visão e o Modelo para se alterarem de forma apropriada. </li></ul>
  12. 12. MVC
  13. 13. Vantagens
  14. 14. Vantagens <ul><li>Independência entre os componentes; </li></ul><ul><li>eficiência; </li></ul><ul><li>escalabilidade; </li></ul><ul><li>reutilização; </li></ul><ul><li>licença flexível (MIT); </li></ul><ul><li>compatibilidade com PHP4 e PHP5; </li></ul><ul><li>geração de CRUD para interação com BD; </li></ul><ul><li>arquitetura MVC; </li></ul><ul><li>validações; </li></ul><ul><li>templates; </li></ul><ul><li>ferramentas que auxiliam gerar Javascript, AJAX, forms HTML, etc; </li></ul><ul><li>comunidade ativa; </li></ul><ul><li>funciona em qualquer subdiretório web, com pouca configuração do Apache. </li></ul>
  15. 15. Desvantagens
  16. 16. Desvantagens <ul><li>Requer uma quantidade maior de tempo para analisar e modelar o sistema; </li></ul><ul><li>Requer pessoal especializado; </li></ul><ul><li>Não é aconselhável para pequenas aplicações. </li></ul>
  17. 17. Requisitos
  18. 18. Requisitos <ul><li>Servidor HTTP. </li></ul><ul><li>Apache com mod_rewrite. </li></ul><ul><li>PHP 4.3.2 ou superior. </li></ul><ul><li>Tecnicamente um banco de dados não é obrigatório, mas nós imaginamos que a maioria das aplicações irão utilizar um. CakePHP suporta uma variedade de banco de dados: </li></ul><ul><ul><li>MySQL (4 ou superior) − Oracle </li></ul></ul><ul><ul><li>PostgreSQL − SQLite </li></ul></ul><ul><ul><li>Firebird DB2 − ODBC </li></ul></ul><ul><ul><li>Microsoft SQL Server − ADOdb </li></ul></ul>
  19. 19. Instalação
  20. 20. Preparando a instalação <ul><li>CakePHP é rápido e fácil de instalar. Vamos focar na configuração com Apache (porque ele é o mais comum). </li></ul><ul><li>A preparação para a instalação consiste dos seguintes passos: </li></ul><ul><ul><li>Baixar uma cópia do CakePHP </li></ul></ul><ul><ul><li>Configurar seu servidor web para manipular php, se necessário </li></ul></ul><ul><ul><li>Checar permissão de arquivos </li></ul></ul>
  21. 21. Apache e PHP <ul><li>Existem maneiras simples de instalar o apache e o PHP no seu computador. </li></ul><ul><li>Eu uso o XAMPP http://www.apachefriends.org/en/xampp.html </li></ul><ul><li>Mas existem outros aplicativos que facilitam a instalação no Windows: </li></ul><ul><ul><li>Wamp http://www.wampserver.com/ </li></ul></ul><ul><ul><li>EasyPHP http://sourceforge.net/projects/quickeasyphp/ </li></ul></ul>
  22. 22. Baixando o CakePHP <ul><li>Há duas maneiras de pegar uma cópia do CakePHP, Primeiro: você pode baixar o arquivo (zip/tar.gz/tar.bz2) ou você pode baixar o código do repositório SVN. </li></ul><ul><li>Para pegar a cópia estável, visite o site http://www.cakephp.org . </li></ul><ul><li>O site CakeForge contém links para muitos outros projetos CakePHP, incluindo plugins e aplicações para CakePHP. As versões de CakePHP estão disponíveis em http://cakeforge.org/projects/cakephp . </li></ul>
  23. 23. Permissões <ul><li>O CakePHP usa o diretório /app/tmp para diversas operações. </li></ul><ul><li>Exemplos: </li></ul><ul><ul><li>descritivos dos modelos </li></ul></ul><ul><ul><li>fazer cache de visões e informações das sessões </li></ul></ul><ul><li>Assim, tenha certeza que o diretório /app/tmp na instalação do seu cake permite escrita pelo usuário do servidor de web. </li></ul>
  24. 24. Instalação <ul><li>No Windows: </li></ul><ul><ul><li>Descompacte o arquivo em uma pasta cake na raiz do seu servidor web. </li></ul></ul><ul><li>No Ubuntu: </li></ul><ul><ul><li>tar xfvj cake_1.1.10.3825.tar.bz2 </li></ul></ul><ul><ul><li>mv mv cake_1.1.10.3825 /var/www/cake </li></ul></ul><ul><li>Testar no navegador no endereço: http://localhost/cake </li></ul>
  25. 25. Configuração
  26. 26. Primeiro acesso
  27. 27. Apache and mod_rewrite (and .htaccess) <ul><li>Caso o arquivo de estilos não tenha aparecido, você precisa configurar o arquivo httpd.conf do Apache. </li></ul><ul><li>Localize <Directory /> e faça as alterações: </li></ul><ul><li><Directory /> Options FollowSymLinks AllowOverride All # Order deny,allow # Deny from all </Directory> </li></ul>
  28. 28. Configuração Apache <ul><li>É necessário duas configurações: o mod_rewrite e o AllowOverride precisam estar ativos. </li></ul><ul><li>Alterar o httpd.conf (apache2.conf no Ubuntu) e descomentar ou adicionar as linhas : </li></ul><ul><ul><li>LoadModule rewrite_module modules/mod_rewrite.so </li></ul></ul><ul><ul><li>AddModule mod_rewrite.c </li></ul></ul><ul><li>Adicionar a linha abaixo no DocumentRoot e reiniciar o Apache: </li></ul><ul><ul><li>AllowOverride all </li></ul></ul>
  29. 29. mod_rewrite <ul><li>Tenha certeza de que está carregando o mod_rewrite corretamente. </li></ul><ul><li>Você deve encontrar algo como: </li></ul><ul><li>LoadModule rewrite_module libexec/apache2/mod_rewrite.so </li></ul><ul><li>Em muitos sistemas esta linha estará comentada (com o # na frente). </li></ul><ul><li>Tire o # e salve o arquivo. </li></ul><ul><li>Reinicie o servidor Apache. </li></ul>
  30. 30. Ajuste do código de segurança <ul><li>Trocar o valor de 'Security.salt' no arquivo app/config/core.php para um valor específico da sua aplicação Não importa o que você vai colocar, desde que seja único </li></ul><ul><li>Configure::write('Security.salt', 'Cf0*&IRUa2GVhz4DRoFmJ9Yq9vr3%'); </li></ul>
  31. 31. Alterações de língua <ul><li>Arquivo core.php (appconfigcore.php) </li></ul><ul><li>Configure::write('App.encoding', 'ISO-8859-1'); </li></ul>
  32. 32. Configuração do banco de dados <ul><li>Altere o arquivo: /app/config/database.php.default para database.php. </li></ul><ul><li>Substitua os valores pelos dados do seu banco de dados: </li></ul><ul><ul><li>var $default = array( </li></ul></ul><ul><ul><li>'driver' => 'mysql', </li></ul></ul><ul><ul><li>'persistent' => false, </li></ul></ul><ul><ul><li>'host' => 'localhost', </li></ul></ul><ul><ul><li>'login' => 'root', </li></ul></ul><ul><ul><li>'password' => '', </li></ul></ul><ul><ul><li>'database' => 'livros', </li></ul></ul><ul><ul><li>'prefix' => '', </li></ul></ul><ul><ul><li>); </li></ul></ul>
  33. 33. Tudo verde!
  34. 34. Favicon <ul><li>Arquivo favicon.ico na pasta: appwebrootfavicon.ico </li></ul><ul><li>Antes: </li></ul><ul><li>Depois: </li></ul>
  35. 35. Diretórios <ul><li>/app - aplicação </li></ul><ul><ul><li>/config – arquivos de configuração, DB, etc </li></ul></ul><ul><ul><li>/controllers – controladores da aplicação </li></ul></ul><ul><ul><li>/index.php – página inicial da aplicação </li></ul></ul><ul><ul><li>/models – modelos da aplicação </li></ul></ul><ul><ul><li>/plugins </li></ul></ul><ul><ul><li>/tmp – usado para chache e logs </li></ul></ul><ul><ul><li>/vendors – bibliotecas de terceiros </li></ul></ul><ul><ul><li>/views – visões da aplicação </li></ul></ul><ul><ul><ul><li>/elements – elementos, pedaços da visão </li></ul></ul></ul><ul><ul><ul><li>/errors – páginas de erros customizadas </li></ul></ul></ul><ul><ul><ul><li>/helpers – ajudantes para gerar código </li></ul></ul></ul><ul><ul><ul><li>/layots – arquivos de layout </li></ul></ul></ul><ul><ul><ul><li>/pages – visões estáticas </li></ul></ul></ul><ul><ul><ul><li>/scaffolds </li></ul></ul></ul><ul><li>/webroot – DocumentRoot para aplicação </li></ul><ul><ul><ul><li>/css – arquivos css </li></ul></ul></ul><ul><ul><ul><li>/files – arquivos comuns </li></ul></ul></ul><ul><ul><ul><li>/img – imagens </li></ul></ul></ul><ul><ul><ul><li>/js – Javascripts </li></ul></ul></ul><ul><li>/cake – código fonte do cake </li></ul><ul><li>/vendors – aplicações de terceiros </li></ul>
  36. 36. Aplicação de exemplo
  37. 37. Desenvolvendo a aplicação <ul><li>Um professor gostaria de uma aplicação web simples para manter-se informado sobre os livros que empresta a seus alunos. </li></ul><ul><li>No sistema ele pode visualizar e alterar os alunos cadastrados e também os empréstimos. </li></ul>
  38. 38. A modelagem
  39. 39. Padronização e não configuração <ul><li>O CakePHP segue algumas regras de padronização para a base de dados: </li></ul><ul><ul><li>Todas as tabelas devem estar no plural </li></ul></ul><ul><ul><li>A chave primária para todas as tabelas deve ser o campo “id” </li></ul></ul><ul><ul><li>Para utilizar chave estrangeira, deve possuir nome da tabela no singular acrescido do campo id. Ex: “usuario_id”. </li></ul></ul><ul><ul><li>O relacionamento “n – n”, deve ser organizado em ordem alfabética, e o primeiro nome no singular acrescido de um “_” nome segunda tabela plural. Ex: livro_usuarios; </li></ul></ul><ul><ul><li>Se você quiser que ele atualize automagicamente as datas de criação e modificação de um registro, basta criar a tabela com as colunas created (para data de criação) e modified (para data de modificação) </li></ul></ul>
  40. 40. Modelagem Adaptada
  41. 41. Criando o banco <ul><li>Após fazer a modelagem, acesse o banco e carregue o SQL de criação do banco. </li></ul><ul><li>Considerando o XAMPP instalado, acesse: http://localhost/phpmyadmin/ </li></ul>
  42. 42. Configurações <ul><li>Faça as configurações necessárias. </li></ul>
  43. 43. Iniciando a aplicação <ul><li>O cake possui uma excelente ferramenta para geração da aplicação e de várias partes de código. </li></ul><ul><li>A ferramenta chama-se Bake . </li></ul>
  44. 44. Adicionando o Bake ao path do Windows <ul><li>Considerando o uso do XAMPP </li></ul><ul><li>Windows XP: </li></ul><ul><li>Clique com o botão direito do mouse em &quot;Meu Computador&quot;, clique em &quot;Propriedades&quot;. Clique na aba &quot;Avançado&quot; e no botão &quot;Variáveis de ambiente&quot;. </li></ul><ul><li>Windows Vista: </li></ul><ul><li>Clique com o botão direito do mouse em &quot;Meu Computador&quot;. Clique em &quot;Configurações avançadas do sistema&quot;. Aceite a pergunta. Clique na aba &quot;Avançado&quot; e no botão &quot;Variáveis de ambiente&quot;. </li></ul><ul><li>Adicionar ao Path: </li></ul><ul><li>;C:xamppphp;C:xampphtdocscakecakeconsole </li></ul><ul><li>Reinicie o computador </li></ul><ul><li>Ou acesse C:xampphtdocscakecakeconsole> e digite cake </li></ul>
  45. 45. Bake <ul><li>No windows, clique no menu iniciar e no executar digite CMD </li></ul><ul><li>No Prompt de comando do Windows, digite cd .. </li></ul><ul><li>até chegar no C: </li></ul><ul><li>Após digite: cd xampphtdocscake </li></ul><ul><li>Então digite: cake bake </li></ul>
  46. 46. Bake <ul><li>Escolha a letra P </li></ul><ul><li>Para a pergunta: What is the full path for this app including the app directory name? </li></ul><ul><li>Digite: C:/xampp/htdocslivros </li></ul><ul><li>Para a pergunta: Look okay? (y/n/q) </li></ul><ul><li>Digite: y </li></ul><ul><li>Para a pergunta: Do you want verbose output? (y/n) </li></ul><ul><li>Digite: y </li></ul>
  47. 47. http://localhost/livros/
  48. 48. Configuração do Banco de Dados <ul><li>Escolha agora a letra D </li></ul><ul><li>Para a configuração padrão, vá deixando tudo em branco, exceto database name </li></ul><ul><li>Name: </li></ul><ul><li>[default] > </li></ul><ul><li>Driver: (db2/firebird/mssql/mysql/mysqli/odbc/oracle/postgres/sqlite/sybase) </li></ul><ul><li>[mysql] > </li></ul><ul><li>Persistent Connection? (y/n) </li></ul><ul><li>[n] > </li></ul><ul><li>Database Host: </li></ul><ul><li>[localhost] > </li></ul><ul><li>Port? </li></ul><ul><li>[n] > </li></ul><ul><li>User: </li></ul><ul><li>[root] > </li></ul><ul><li>Password: </li></ul><ul><li>> </li></ul><ul><li>The password you supplied was empty. </li></ul><ul><li>Use an empty password? (y/n) </li></ul><ul><li>[n] > y </li></ul><ul><li>Database Name: </li></ul><ul><li>[cake] > livros </li></ul><ul><li>Table Prefix? </li></ul><ul><li>[n] > </li></ul><ul><li>Table encoding? </li></ul><ul><li>[n] > </li></ul>
  49. 49. Banco de Dados <ul><li>Confirme suas escolhas </li></ul>
  50. 50. Possíveis erros <ul><li>Neste ponto, houve um erro no prompt de comando e o Bake foi fechado. </li></ul><ul><li>Ao menos a configuração foi feita. </li></ul><ul><li>O Bake funciona muito melhor no linux. </li></ul><ul><li>Os usuários do Windows estão sujeitos a este tipo de coisa. </li></ul>
  51. 51. Erro fatal <ul><li>Se der erro, o bake encerra e não pode ser chamado novamente da mesma maneira. </li></ul><ul><li>Use o comando: </li></ul><ul><li>cake bake -app C:xampphtdocslivros </li></ul><ul><li>E substitua o caminho acima pelo caminho completo da sua aplicação </li></ul>
  52. 52. Model <ul><li>cake bake -app C:xampphtdocslivros </li></ul><ul><li>What would you like to Bake? (D/M/V/C/P/Q) </li></ul><ul><li>> M </li></ul><ul><li>Possible Models based on your current database: </li></ul><ul><li>1. LivroUsuario </li></ul><ul><li>2. Livro </li></ul><ul><li>3. Usuario </li></ul><ul><li>Enter a number from the list above, type in the name of another model, or 'q' to </li></ul><ul><li>exit </li></ul><ul><li>[q] > 2 </li></ul><ul><li>Would you like to supply validation criteria for the fields in your model? (y/n) </li></ul><ul><li>[y] > y </li></ul>
  53. 53. Validação de Campos <ul><li>Se deseja fornecer critérios de validação para os campos da tabela, escolha y para a pergunta: Would you like to supply validation criteria for the fields in your model? </li></ul><ul><li>Para cada um dos campos você deve escolher o tipo de validação. </li></ul><ul><li>Isso vai mudar de projeto para projeto. </li></ul><ul><li>Neste nosso projeto escolha: id: 29 ano_public: 8 autores: 29 editores: 29 titulo: 20 </li></ul>
  54. 54. Associações <ul><li>É necessário definir associações entre os modelos. </li></ul><ul><li>Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) . </li></ul><ul><li>Existem quatro associações: </li></ul><ul><ul><li>hasOne: possui um </li></ul></ul><ul><ul><li>hasMany: possui muitos </li></ul></ul><ul><ul><li>belongsTo: pertence a </li></ul></ul><ul><ul><li>hasAndBelongsToMany: tem e pertence a muitos </li></ul></ul><ul><li>Neste modelo não é preciso associação. </li></ul><ul><li>Agora você responde se é preciso gerar os arquivos para o PHPUnit. Do you want to bake unit test files anyway? (y/n) </li></ul><ul><li>Neste caso, digite n </li></ul>
  55. 55. Modelo para Usuarios <ul><li>What would you like to Bake? (D/M/V/C/P/Q) </li></ul><ul><li>> M </li></ul><ul><li>Possible Models based on your current database: </li></ul><ul><li>1. LivroUsuario </li></ul><ul><li>2. Livro </li></ul><ul><li>3. Usuario </li></ul><ul><li>Enter a number from the list above, type in the name of another model, or 'q' to exit </li></ul><ul><li>[q] > 3 </li></ul><ul><li>Would you like to supply validation criteria for the fields in your model? (y/n) </li></ul><ul><li>[y] > y </li></ul>
  56. 56. Validação dos campos <ul><li>Escolha as opções: id: 29 nome: 20 email: 10 senha: 29 tipo_user: 29 classe_user: 29 </li></ul><ul><li>Você deseja criar associações? Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) </li></ul><ul><li>[y] > n </li></ul><ul><li>SimpleTest is not installed. </li></ul><ul><li>Do you want to bake unit </li></ul><ul><li>test files anyway?(y/n) </li></ul><ul><li>[y] > n </li></ul>
  57. 57. Modelo para LivroUsuarios <ul><li>Possible Models based on your current database: </li></ul><ul><li>1. LivroUsuario </li></ul><ul><li>2. Livro </li></ul><ul><li>3. Usuario </li></ul><ul><li>Enter a number from the list above, type in the name of another model, or 'q' to exit </li></ul><ul><li>[q] > 1 </li></ul><ul><li>Would you like to supply validation criteria for the fields in your model? (y/n) </li></ul><ul><li>[y] > y </li></ul><ul><li>Validação: id: 29 livro_id: 21 usuario_id: 21 data_emprestimo: 8 data_devolucao: 8 </li></ul><ul><li>Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) </li></ul><ul><li>[y] > y </li></ul>
  58. 58. Associações <ul><li>LivroUsuario belongsTo Usuario? (y/n) – y </li></ul><ul><li>LivroUsuario belongsTo Livro? (y/n) - y </li></ul>
  59. 59. Criação dos Controles <ul><li>--------------------------------------------------------------- </li></ul><ul><li>Interactive Bake Shell </li></ul><ul><li>--------------------------------------------------------------- </li></ul><ul><li>[D]atabase Configuration </li></ul><ul><li>[M]odel </li></ul><ul><li>[V]iew </li></ul><ul><li>[C]ontroller </li></ul><ul><li>[P]roject </li></ul><ul><li>[Q]uit </li></ul><ul><li>What would you like to Bake? (D/M/V/C/P/Q) </li></ul><ul><li>> c </li></ul>
  60. 60. <ul><li>Faça o mesmo para os 3 itens: </li></ul><ul><li>Would you like to build your controller interactively? (y/n) </li></ul><ul><li>[y] > y </li></ul><ul><li>Would you like to use scaffolding? (y/n) </li></ul><ul><li>[n] > n </li></ul><ul><li>Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n) </li></ul><ul><li>[n] > y </li></ul><ul><li>Would you like to create the methods for admin routing? (y/n) </li></ul><ul><li>[n] > n </li></ul><ul><li>Would you like this controller to use other helpers besides HtmlHelper and FormHelper? (y/n) </li></ul><ul><li>[n] > n </li></ul><ul><li>Would you like this controller to use any components? (y/n) </li></ul><ul><li>[n] > n </li></ul><ul><li>Would you like to use Sessions? (y/n) </li></ul><ul><li>[y] > n </li></ul>
  61. 61. Criação das Visões <ul><li>Faça o mesmo para os 3 itens: </li></ul><ul><li>Would you like to create some scaffolded views (index, add, view, edit) for this controller? </li></ul><ul><li>NOTE: Before doing so, you'll need to create your controller and model classes (including associated models). (y/n) </li></ul><ul><li>[n] > y </li></ul><ul><li>Would you like to create the views for admin routing? (y/n) </li></ul><ul><li>[y] > n </li></ul>
  62. 62. Movendo os arquivos criados <ul><li>Se o Bake não criou estes arquivos no local certo, você deve movê-los. </li></ul><ul><li>Acesse: C:xampphtdocscakeappmodels </li></ul><ul><li>Selecione os três arquivos: </li></ul><ul><li>Recorte e cole na pasta: C:xampphtdocslivrosmodels </li></ul>
  63. 63. Movendo os arquivos criados <ul><li>Acesse: C:xampphtdocscakeappcontrollers </li></ul><ul><li>Selecione os três arquivos: </li></ul><ul><li>Recorte e cole na pasta: C:xampphtdocslivroscontrollers </li></ul>
  64. 64. Movendo os arquivos criados <ul><li>Acesse: C:xampphtdocscakeappviews </li></ul><ul><li>Selecione as três pastas: </li></ul><ul><li>Recorte e cole na pasta: C:xampphtdocslivrosviews </li></ul>
  65. 65. Baked <ul><li>Nossa aplicação foi preparada. </li></ul><ul><li>Acesse: </li></ul><ul><ul><li>http://localhost/livros/livros </li></ul></ul><ul><li>Está tudo em inglês, então você vai precisar perder um tempo trocando a linguagem para português. </li></ul>
  66. 66. Caminho Principal <ul><li>Agora vamos redirecionar a aplicação para apontar para a página que você deseja que seja a principal. </li></ul><ul><li>Routes </li></ul><ul><li>Adicionar ao arquivo </li></ul><ul><li>/app/config/routes.php </li></ul><ul><li>Linha 35 </li></ul><ul><li>Router::connect('/', array('controller' => 'livro_usuarios', 'action' => 'index')); </li></ul>
  67. 67. Dados <ul><li>Vamos cadastrar alguns dados... </li></ul>
  68. 68. Customizando <ul><li>Abra, por exemplo, o arquivo: C:xampphtdocslivrosviewslivro_usuariosindex.ctp </li></ul><ul><li>Vamos corrigir os nomes e deixá-los mais intuitivos para o usuário final </li></ul><ul><li>Na linha 2, troque: <h2><?php __('LivroUsuarios');?></h2> </li></ul><ul><li>por <h2><?php __('Empréstimos');?></h2> </li></ul><ul><li>Obs: lembre-se do problema da acentuação! </li></ul>
  69. 69. Customizando <ul><li>Na linha 6, troque: 'format' => __('Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%', true) </li></ul><ul><li>por 'format' => __('Página %page% de %pages%, mostrando %current% registros de %count% registros totais, começando no registro %start%, terminando no registro %end%.', true) </li></ul><ul><li>Para mudar o nome dos campos da tabela: <th><?php echo $paginator->sort( 'Usuário', 'usuario_id');?></th> </li></ul>
  70. 70. Customizando <ul><li>Na visão de adição de empréstimos aparece o código do aluno e o código do livro. </li></ul><ul><li>Vamos alterar para aparecer o nome. </li></ul><ul><li>No mesmo arquivo, troque <?php echo $livroUsuario['LivroUsuario']['livro_id']; ?> </li></ul><ul><li>por <?php echo $html->link($livroUsuario['Livro'][' titulo '], array('controller'=> 'livros', 'action'=>'view', $livroUsuario['Livro']['id'])); ?> </li></ul><ul><li>e <?php echo $livroUsuario['LivroUsuario']['usuario_id']; ?> </li></ul><ul><li>por <?php echo $html->link($livroUsuario['Usuario'][' nome '], array('controller'=> 'usuarios', 'action'=>'view', $livroUsuario['Usuario']['id'])); ?> </li></ul><ul><li>E após, faça o resto das substituições para português em todos os arquivos com extensão ctp . </li></ul>
  71. 71. Página de Cadastro <ul><li>No arquivos de controle gerados pelo bake, após salvar um novo dado, ele sai da página principal. </li></ul><ul><li>Para resolver este detalhe, edite o controle. </li></ul><ul><li>Por exemplo, no arquivo: livros_controller.php </li></ul><ul><li>Na função function add(), troque a linha: $this->flash(__('Livro saved.', true), array('action'=>'index')); por: $this->Session->setFlash('Seu livro foi salvo.'); $this->redirect(array('action'=>'index')); </li></ul>
  72. 72. Ajax <ul><li>O Cake possui uma série de Helpers para auxiliar no desenvolvimento. </li></ul><ul><li>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. </li></ul><ul><li>http://www.prototypejs.org/ </li></ul><ul><li>http://script.aculo.us/ </li></ul><ul><li>Coloque os arquivos prototype.js, e os outros 6 arquivos: scriptaculous.js, builder.js, effects.js, dragdrop.js, controls.js and slider.js. </li></ul>
  73. 73. Exemplo <ul><li>Vamos fazer um pequeno exemplo. </li></ul><ul><li>Uma pequena busca de livros usando Ajax. </li></ul><ul><li>Primeiro é preciso criar um novo controlador para a aplicação. </li></ul><ul><li>No diretório controllers vamos criar um novo arquivo, chamado buscas_controller.php </li></ul>
  74. 74. <ul><li><?php </li></ul><ul><li>class BuscasController extends AppController { </li></ul><ul><li>var $name = 'Buscas'; //nome do controlador </li></ul><ul><li>var $helpers = array('Html','Ajax','Javascript'); //uso dos helpers </li></ul><ul><li>var $uses = array(&quot;Livro&quot;); //indica qual modelo usar </li></ul><ul><li>//função da pagina inicial </li></ul><ul><li>function index() { </li></ul><ul><li>} </li></ul><ul><li>//função que sera executada por AJAX para retornar os livros </li></ul><ul><li>function update () { </li></ul><ul><li>//pega o parametro enviado pelo formulário </li></ul><ul><li>$consulta = &quot;%&quot;. $this->params[&quot;form&quot;][&quot;titulo&quot;].&quot;%&quot;; //executa a consulta </li></ul><ul><li>$this->set('livros',$this->Livro->findAll(&quot;titulo LIKE '$consulta'&quot;)); </li></ul><ul><li>$this->layout = &quot;ajax&quot;; //queremos usar o layout de ajax e não html </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul>
  75. 75. Visões <ul><li>O próximo passo é criar as visões. </li></ul><ul><li>No diretório views deve-se criar um diretório para as views da aplicação. </li></ul><ul><li>Neste caso chamamos de buscas. </li></ul><ul><li>Os arquivos correspondentes aos métodos do controlador foram criados: </li></ul><ul><li>index.ctp </li></ul><ul><li>update.ctp </li></ul>
  76. 76. index.ctp <ul><li><?php echo $javascript->link('prototype')?> </li></ul><ul><li><?php echo $javascript->link('scriptaculous')?> </li></ul><ul><li><?php echo $ajax->form('update','livro',array('model'=>'Livro','update'=>'resultados'));?> </li></ul><ul><li><input type=&quot;text&quot; name=&quot;titulo&quot;> </li></ul><ul><li><input type=&quot;submit&quot; value=&quot;Pesquisar&quot;> </li></ul><ul><li><div id=&quot;resultados&quot;> </div> </li></ul>
  77. 77. update.ctp <ul><li><?php echo $ajax->div('resultados'); ?> </li></ul><ul><li><?php </li></ul><ul><li>foreach($livros as $livro) { </li></ul><ul><li>echo $html->link($livro['Livro']['titulo'], array('controller'=> 'livros', 'action'=>'view', $livro['Livro']['id'])).&quot;<br/>&quot;; </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul><ul><li><?php echo $ajax->divEnd('resultados'); ?> </li></ul>
  78. 78. Conclusões <ul><li>Desenvolver usando frameworks facilita a padronização e trabalho em equipe. </li></ul><ul><li>Acelera o ciclo de desenvolvimento. </li></ul><ul><li>Cake é fácil de aprender. </li></ul><ul><li>Cake usa uma estrutura de arquivos prática e simples </li></ul>
  79. 79. Obrigada. Laura Lopes [email_address] http://www.lauralopes.com.br

×