Desenvolvimento Web
com CakePHP
Sérgio Vilar
Desenvolvedor de Interfaces, Redesoft
Agenda
• Pré-requisitos para este minicurso
• Frameworks
• MVC
• CakePHP
• Mão na massa
Pré-requisitos para este minicurso
• Lógica de programação
• Php Básico
• Computador com Apache e MySQL
• Editor de texto de sua preferência
• Um suco, um toddynho, um café...
Frameworks
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
 • Múltiplos bancos de dados
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
 • Múltiplos bancos de dados
 • Cache
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
 • Múltiplos bancos de dados
 • Cache
 • Templates
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
 • Múltiplos bancos de dados
 • Cache
 • Templates
 • Validação
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
 • Múltiplos bancos de dados
 • Cache
 • Templates
 • Validação
 • Login de usuários
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:
 • Múltiplos bancos de dados
 • Cache
 • Templates
 • Validação
 • Login de usuários
 • Geração de código
Porque usar um Framework?
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
• Comunidade ativa (Componentes e add-ons à vontade)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objeto e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
• Comunidade ativa (Componentes e add-ons à vontade)
• Desenvolvimento simples e ágil (em sua maioria)
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objeto e organizado
• Consequentemente, manutenção mais fácil
• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)
• Comunidade ativa (Componentes e add-ons à vontade)
• Desenvolvimento simples e ágil (em sua maioria)
• Evitar a POG (Programação Orientada a Gambiarra)
Principais Frameworks PHP
• Yii
• CodeIgniter
• CakePHP
• Zend
• Symfony




Fonte: phpframeworks.com
MVC
MVC
• Padrão de projetos
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
MVC
• Padrão de projetos
• Separa a aplicação em três partes:


                           Interação com o banco

                                 Model
MVC
• Padrão de projetos
• Separa a aplicação em três partes:


                                  Interação com o banco

                                        Model


               Interface da aplicação

                      View
MVC
• Padrão de projetos
• Separa a aplicação em três partes:


                                  Interação com o banco

                                        Model


               Interface da aplicação                     Lógica da aplicação

                      View                                   Controler
MVC
• Padrão de projetos
• Separa a aplicação em três partes:


                                  Interação com o banco

                                        Model


               Interface da aplicação                     Lógica da aplicação

                      View                                   Controler




                       Como assim, Bial?
MVC

Browser         Controler




     O Browser envia uma requisição à aplicação
MVC

Browser             Controler


                                             Model




           O Controller processa a requisicão e
          consulta a lógica de negócio da aplicação
MVC

Browser           Controler


                                          Model




                                          DB


          O Model acessa o Banco de Dados e
          recupera os dados requisitados pelo
                      Controller
MVC

Browser           Controler


                                         Model


                    View


                                          DB


             O Controller renderiza a View
          correspondente e apresenta os dados
                     recuperados
MVC, porque usar?
MVC, porque usar?
• Base funcional e organizacional da aplicação
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
• Aplicação escalável
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
• Aplicação escalável
• Desenvolvimento em paralelo
CakePHP
O que é o CakePHP?
O que é o CakePHP?
• O CakePHP é um Framework Php que visa o desenvolvimento ágil de
 aplicações usando os padrões MVC e ORM.
CakePHP: Vantagens
CakePHP: Vantagens
• Compatível com Php 4 e 5
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite,
 SQL Server, Oracle, OBDC, Firebird)
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite,
 SQL Server, Oracle, OBDC, Firebird)

• Componentes nativos para Email, Sessão, Criptografia, Autorização,
 ACL, etc
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite,
 SQL Server, Oracle, OBDC, Firebird)

• Componentes nativos para Email, Sessão, Criptografia, Autorização,
 ACL, etc

• Internacionalização
CakePHP: Instalando
https://github.com/sergiovilar/minicurso-cakephp
CakePHP: Instalando
• CakePHP com login de usuários já desenvolvido, baseado no artigo:
 http://book.cakephp.org/2.0/pt/tutorials-and-examples/blog-auth-
 example/auth.html

• O CakePHP também pode ser baixado pelo site oficial:
 http://cakephp.org
CakePHP: Instalando
• Extraia o .zip e copie para a pasta C:xampphtdocs
• Renomeie a pasta para “minicurso-cakephp”
CakePHP: Instalando
• Acesse: http://localhost/phpMyAdmin e crie um banco de dados
 chamado cake_minicurso

• Abra o arquivo C:xampphtdocsminicurso-cakephpappConfig
 database.php e configure o acesso ao banco de dados:

 • Login: root
 • Password: (vazia)
 • Database: cake_minicurso
CakePHP: Instalando
• Certifique-se de que seu servidor Apache está ligado
• Teste acessando http://localhost/minicurso-cakephp
Mão na massa!
O que vamos fazer?
• Um blog simples onde usuários deslogados poderão acessar a home
 do blog e as internas dos posts

• Apenas usuários logados poderão cadastrar e editar posts
Configurando o banco
• Importe o arquivo minicurso.sql para o banco de dados na aplicação
 através do phpMyAdmin
Uma nota sobre Convenções
• O Cake possui Convenção sobre configuração, ou seja, uma série de
 regras são seguidas para que o desenvolvedor se preocupe apenas
 com o que realmente importa
Uma nota sobre Convenções
• O Cake possui Convenção sobre configuração, ou seja, uma série de
 regras são seguidas para que o desenvolvedor se preocupe apenas
 com o que realmente importa

• O Cake faz o uso de convenções para nomear as tabelas do banco,
 modelos, controllers e views. Veremos como isso funciona:
Uma nota sobre Convenções
• O Cake possui Convenção sobre configuração, ou seja, uma série de
 regras são seguidas para que o desenvolvedor se preocupe apenas
 com o que realmente importa

• O Cake faz o uso de convenções para nomear as tabelas do banco,
 modelos, controllers e views. Veremos como isso funciona:

 • Tabela: posts (sempre no plural)
 • Model: Post
 • Controller: PostsController
 • View: Posts
Criando o primeiro Model
app/Model/Post.php



  <?php

  class Post extends AppModel {

        public $name = 'Post';

  }

  ?>
Criando o primeiro Controller
app/Controller/PostsController.php


  <?php
  class PostsController extends AppController{!

  ! var $uses = 'Post';
  ! var $scaffold;

  }

  ?>
Criando o primeiro Controller
app/Controller/PostsController.php


  <?php
  class PostsController extends AppController{!

  ! var $uses = 'Post';              Model
  ! var $scaffold;

  }

  ?>
Criando o primeiro Controller
app/Controller/PostsController.php


  <?php
  class PostsController extends AppController{!

  ! var $uses = 'Post';
  ! var $scaffold;
                                     O que é isso?
  }

  ?>
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-
 Update-Delete) do nosso Controller
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-
 Update-Delete) do nosso Controller

• Vantagens:
 • É rápido e fácil
 • Ótimo para prototipar aplicações
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-
 Update-Delete) do nosso Controller

• Vantagens:
 • É rápido e fácil
 • Ótimo para prototipar aplicações
• Desvantagens:
 • Não é flexível
 • Baixa segurança
Vamos testar?
Acesse http://localhost/minicurso-cakephp/posts/add




          Aplicação        Controller            Método
Vamos testar?
Acesse http://localhost/minicurso-cakephp/posts/add
Então, qualquer um pode cadastrar posts?
Por enquanto sim, vamos adicionar ao nosso PostsController o método
que limita o acesso a apenas usuários logados:
Então, qualquer um pode cadastrar posts?
Por enquanto sim, vamos adicionar ao nosso PostsController o método
que limita o acesso a apenas usuários logados:


  public function beforeFilter() {

      parent::beforeFilter();
      $this->Auth->allow('blog', 'v');

  }
Então, qualquer um pode cadastrar posts?
Por enquanto sim, vamos adicionar ao nosso PostsController o método
que limita o acesso a apenas usuários logados:


  public function beforeFilter() {

      parent::beforeFilter();
      $this->Auth->allow('blog', 'v');

  }



“blog” e “v” serão os métodos acessíveis aos
visitantes do nosso blog.
Criando o método “blog”
Adicione o método no PostsController:

  public function blog(){
      !
   this->layout = 'blog';

      $this->set('posts', $this->Post->find('all'));

  }
Criando o método “blog”
Adicione o método no PostsController:
                                        Usa o layout customizado que
                                        está em View/Layouts/blog.ctp
  public function blog(){
      !
   this->layout = 'blog';

      $this->set('posts', $this->Post->find('all'));

  }
Criando o método “blog”
Adicione o método no PostsController:

  public function blog(){
      !
   this->layout = 'blog';

      $this->set('posts', $this->Post->find('all'));

  }

             Busca os posts e os coloca na variável $posts para que a view
             possa receber.
Criando a view “blog”
app/View/Posts/blog.ctp



  <?php foreach($posts as $post): ?>

    <h2>
    ! <?php echo $this->html->link(
    ! !   !    $post['Post']['titulo'],
    ! !   !    '/posts/v/'.$post['Post']['id']);
    ! ?>
    </h2>

    <p>Postado em <?php echo $post['Post']['data']; ?></p>
    <div><?php echo $post['Post']['conteudo']; ?></div>

  <?php endforeach; ?>
Criando a view “blog”
app/View/Posts/blog.ctp
                                            Percorre a array de posts



  <?php foreach($posts as $post): ?>

    <h2>
    ! <?php echo $this->html->link(
    ! !   !    $post['Post']['titulo'],
    ! !   !    '/posts/v/'.$post['Post']['id']);
    ! ?>
    </h2>

    <p>Postado em <?php echo $post['Post']['data']; ?></p>
    <div><?php echo $post['Post']['conteudo']; ?></div>

  <?php endforeach; ?>
Criando a view “blog”
app/View/Posts/blog.ctp

                                            Cria um link para a página
                                            interna do post
  <?php foreach($posts as $post): ?>

    <h2>
    ! <?php echo $this->html->link(
    ! !   !    $post['Post']['titulo'],
    ! !   !    '/posts/v/'.$post['Post']['id']);
    ! ?>
    </h2>

    <p>Postado em <?php echo $post['Post']['data']; ?></p>
    <div><?php echo $post['Post']['conteudo']; ?></div>

  <?php endforeach; ?>
Criando a view “blog”
app/View/Posts/blog.ctp



  <?php foreach($posts as $post): ?>

    <h2>
    ! <?php echo $this->html->link(
    ! !   !    $post['Post']['titulo'],
    ! !   !    '/posts/v/'.$post['Post']['id']);
    ! ?>
    </h2>

    <p>Postado em <?php echo $post['Post']['data']; ?></p>
    <div><?php echo $post['Post']['conteudo']; ?></div>

  <?php endforeach; ?>




Acesse:
http://localhost/minicurso-cakephp/posts/blog
Criando o método “v”
Adicione o método no PostsController:


  public function v($id = null){

      $this->layout = 'blog';

      $this->Post->id = $id;
      $this->set('post', $this->Post->read());

  }
Criando o método “v”
Adicione o método no PostsController:


  public function v($id = null){

      $this->layout = 'blog';
                                        Recebe a ID do post requisitado

      $this->Post->id = $id;
      $this->set('post', $this->Post->read());

  }
Criando o método “v”
Adicione o método no PostsController:


  public function v($id = null){

      $this->layout = 'blog';           Busca no model e coloca dentro
                                        da variável $post
      $this->Post->id = $id;
      $this->set('post', $this->Post->read());

  }
Criando a view “v”
app/View/Posts/v.ctp


   <h2><?php echo $post['Post']['titulo']; ?></h2>

   <p>Postado em <?php echo $post['Post']['data']; ?></p>
   <div><?php echo $post['Post']['conteudo']; ?></div>




Acesse:
http://localhost/minicurso-cakephp/posts/blog
Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/
blog e teste novamente.
Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/
blog e teste novamente.

Os arquivos com todo o código fonte deste minicurso podem ser
baixados em:
https://github.com/sergiovilar/minicurso-cakephp/archive/
desenvolvimento.zip
Exercício
Tomando como base o exemplo do blog, crie um Model, um Controller
com CRUD e listagem tomando como base a tabela events.
É isso aí, até a próxima!
vilar@me.com
http://about.me/vilar
http://slideshare.net/sergiovilar
http://github.com/sergiovilar

Desenvolvimento Web com CakePHP

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