Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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,610 views

Published on

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

Published in: Technology

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

×