Desenvolvendo aplicações web com o framework cakephp

29
Desenvolvendo aplicações web com o framework CAKEPHP www.cakephp.org Rodrigo Pletsch Aramburu

description

Slides da minha primeira palestra - 1º UruguaianaTech 2009

Transcript of Desenvolvendo aplicações web com o framework cakephp

Page 1: Desenvolvendo aplicações web com o framework cakephp

Desenvolvendo aplicações web com o framework CAKEPHP

www.cakephp.org

Rodrigo Pletsch Aramburu

Page 2: Desenvolvendo aplicações web com o framework cakephp

O que é um framework?

Muitas funcionalidades são compartilhados por uma família de aplicações(validação, persistência, etc ...)

Gasta-se muito tempo provendo e testando estas funcionalidades para cada aplicação

Um framework fornece um esqueleto de funcionalidades projetado para ser reutilizável

Page 3: Desenvolvendo aplicações web com o framework cakephp

O que é o CakePHP Framework de desenvolvimento rápido em PHP

Utiliza a arquitetura MVC

ORM - Mapeamento Objeto Relacional

Utiliza URLs amigáveis(mod_rewrite)

Estrutura de diretórios simples e clara

Atualmente na versão 1.2.5 Stable

Page 4: Desenvolvendo aplicações web com o framework cakephp

Arquitetura MVC

• A arquitetura MVC divide a aplicação em três partes para facilitar o desenvolvimento e manutenção:

–Model(Modelo)

–View(Visão)

–Controller(Controle)

Page 5: Desenvolvendo aplicações web com o framework cakephp

Modelo(Model)

• Representam os dados da aplicação

• Normalmente é associado a uma tabela do banco de dados

• É responsável pela persistência dos dados(inserir, atualizar, deletar, buscar) e validação, associação ...

• Definimos os relacionamentos entre os dados

Page 6: Desenvolvendo aplicações web com o framework cakephp

Modelo (Model)

Exemplo (/app/models/contato.php): <? class Contato extends AppModel{◦ var $name = "Contato";◦ var $validate = array(◦ "nome"=>array(◦ ‘rule’=>VALID_NOT_EMPTY,◦ ‘message’=>’O nome do contato deve ser preenchido’

◦ ); } ?>

Page 7: Desenvolvendo aplicações web com o framework cakephp

Associações entre Associações entre Modelos(Model)Modelos(Model)

• hasOne (Um Usuário tem um Perfil. )

• belongsTo (Um Artigo pertence a uma Categoria)

• hasMany (Uma Categoria tem muitos Artigos)

• belongsAndHasMany (Um cliente loca vários DVDs , um DVD é locado por vários clientes)

Page 8: Desenvolvendo aplicações web com o framework cakephp

Associações entre Associações entre Modelos(Model)Modelos(Model)

<?php

class Funcionario extends AppModel{

var $name = "Funcionario";

...

var $belongsTo = array("Empresa");

}

?>

----------------------------------------------------

<?php

class Empresa extends AppModel{

var $name = “Empresa";

...

var $hasMany = array(“Funcionario");

}

?>

Page 9: Desenvolvendo aplicações web com o framework cakephp

Associações entre Associações entre Modelos(Model)Modelos(Model)

Page 10: Desenvolvendo aplicações web com o framework cakephp

Controle(Controller)

• Responsável pelo tratamento das requisições feitas pelo cliente

• Executa a lógica especifica da aplicação

• As operações do banco de dados são feitas através de uma instância do modelo na camada de controle $this->Contato->save($dados)

• Define os dados a serem utilizados na Visão(view)

Page 11: Desenvolvendo aplicações web com o framework cakephp

Controle (Controller)

• Exemplo(/app/controllers/contatos_controller.php):<?

class ContatosController extends AppController{var $name = "ContatosController";var $uses = array(“Contato”);var helpers=array(“Html”,”Form”,”Javascript”);

function infocontato($id){// algum codigo

}}

?>

Page 12: Desenvolvendo aplicações web com o framework cakephp

Visão (View)

• Interface com usuário e/ou outro sistema;

• Fornece uma maneira de visualizar os dados;

• Saída diversa: HTML, PDF, …

Page 13: Desenvolvendo aplicações web com o framework cakephp

Visão (View)

• Exemplo:(/app/view/contato/infocontato.ctp)

<h2>Informações do contato:</h2>

<p>Nome Contato: <? echo

$dados["Contato"]["nome"] ?></p>

<p>E-mail Contato: <? echo

$dados["Contato"][“email"] ?></p>

Page 14: Desenvolvendo aplicações web com o framework cakephp

Uma requisição ao CakePHP

Page 15: Desenvolvendo aplicações web com o framework cakephp

Uma requisição ao CakePHP

• Por exemplo: • http://localhost/contatos/infocontato/1

• – Controller: contatos• – Método/Action: infocontato• – Paramêtro: 1

Page 16: Desenvolvendo aplicações web com o framework cakephp

Estrutura de Diretórios /raiz/◦ app

config controllers locale models plugins tmp vendors views webroot

css img js

◦ cake◦ docs◦ vendors

Page 17: Desenvolvendo aplicações web com o framework cakephp

Helpers

• Hepers são objetos que fornecem funcionalidades genéricas para a view, como criar formulários, paginação de resultados , e diversas outras tags

• Os helpers são declarados no controle e só podem ser utilizados na Visão(View)

Page 18: Desenvolvendo aplicações web com o framework cakephp

Helpers - Exemplos

• Método<?php echo

$html->image(‘/img/logo.png’,array(‘alt’=>’Logo’));

?>

• Código gerado<img src="/cake/img/logo.png" alt="Logo" />

Page 19: Desenvolvendo aplicações web com o framework cakephp

Helpers - Exemplos• Método<?php

echo $html->link('Titulo Página', "http://ww.google.com.br", null, 'Deixar a página?');

?>

• Código gerado<a href="http://ww.google.com.br" onclick="return confirm(&#039;Deixar a

página?&#039;);">Titulo Página</a>

Page 20: Desenvolvendo aplicações web com o framework cakephp

Components

• Lógica genérica para se utilizada nos controllers

• Upload de arquivos, Envio de e-mail, controle de acesso....

Page 21: Desenvolvendo aplicações web com o framework cakephp

Component - Session

• O CakePHP fornece um Component para trabalhar com Sessões

• $this->Session->write(nome,valor);

• $this->Session->read(nome);

• $this->Session->setFlash(texto);

Page 22: Desenvolvendo aplicações web com o framework cakephp

Buscando informações

• $this->Model->read(campos , id);

Array (

[Contato] => Array (

[nome] => Rodrigo

[email] => [email protected]

[telefone] => 987654321

[endereco] => 15 de Novembro

)

)

Page 23: Desenvolvendo aplicações web com o framework cakephp

Buscando informações

• $this->Model->findAll();Array (

[0] => Array ( [Contato] => Array (

[id] => 1 [nome] => Rodrigo [email] => [email protected]

) ) [1] => Array (

[Contato] => Array ( [id] => 2 [nome] => Fulano [email] => [email protected]

)))

Page 24: Desenvolvendo aplicações web com o framework cakephp

Layout (/app/view/layouts/default.ctp)<html>

<head>

<title>CakePHP - <?php echo $title_for_layout; ?></title>

</head>

<body>

<h1>Titulo da Página</h1>

<?php echo $content_for_layout; ?>

</body>

</html>

Page 25: Desenvolvendo aplicações web com o framework cakephp

Passando valores para o view

• As variáveis criadas no controller não serão acessíveis na view

• Para passar valores para view utiliza-se o método:$this->set(‘nomeNaView’, $valor);

• Na view será disponível uma variável $nomeNaView que terá o valor contido em $valor

Page 26: Desenvolvendo aplicações web com o framework cakephp

Formulários

• Para a criação de formulários o CakePHP fornece um Helper “Form”

<?php

echo $form->Create(‘Contato’);

$form->input(‘Contato.nome’, array(‘label’=>’Nome:’));

echo $form->end(‘Salvar’);

?>

Page 27: Desenvolvendo aplicações web com o framework cakephp

Formulário Criado <form id="ContatoAdicionarForm" method="post"

action="/cake/contatos/add">

<fieldset style="display:none;"><input type="hidden" name="_method" value="POST" /></fieldset>

<div class="input text required">

<label for="ContatoNome">Nome:</label>

<input name="data[Contato][nome]" type="text" size="60" maxlength="100" value="" id="ContatoNome" />

</div>

<div class="submit">

<input type="submit" value="Salvar" />

</div>

</form>

Page 28: Desenvolvendo aplicações web com o framework cakephp

Recebendo valores do Formulário

• Os valores enviados pelo formulário serão acessíveis através de $this->data

array ( [Contato] => Array (

[nome] => Rodrigo [email] => [email protected] [telefone] => 987654321 [endereco] => 15 de Novembro

)

)

Page 29: Desenvolvendo aplicações web com o framework cakephp

Perguntas?

[email protected]