Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucaswxp

[TUTORIAL] Iniciando no CakePHP - Entendendo o Controller [parte3]

Recommended Posts

Este é o próximo tutorial da "série": Iniciando no CakePHP. Neste, falaremos mais sobre o controller, veremos algumas coisas básicas e também veremos algo bem legal chamado "Scaffold"

 

Pré-requisitos

 

* Ter o módulo mod_rewrite habilitado

* Um conhecimento razoável sobre Orientação a Objeto

* Lido a parte 2

 

Conteúdo

Começando

 

Vamos começar criando um controller básico:

app/controllers/noticias_controller.php

<?php
class NoticiasController extends AppController {
 var $name = 'Noticias';

}
?>

Criamos a classe NoticiasController. Os controllers devem sempre ter o nome de seu model (no caso é Noticia) no plural, com o sufixo "Controller" e sempre estender a classe AppController, para assim, herdar alguns métodos e propriedades legais =P

 

Logo após, vem a propriedade $name, já falamos sobre ela no post sobre models, ela funciona similarmente como no model, a diferença é que você não precisa por o sufixo "Controller".

 

Ok! Nosso controller ainda não tem nada, portanto vamos colocar um método nele chamado index e outro chamado teste.

 

<?php
class NoticiasController extends AppController {
 var $name = 'Noticias';

 function index(){
 echo 'Logica para a "página" index do site :)';
 }

 function teste(){
 echo 'Logica para a "página" teste do site';
 }
}
?>

Métodos de controller são chamados de actions, porém eu continuarei chamando de "método" neste tutorial, para você ter um tempo para assemelhar a idéia, porém fica a nota:

 

No CakePHP, ACTION é o mesmo que MÉTODO

 

Criamos os métodos "index" e "teste", para facilitar o aprendizado pense que os métodos dos controllers são como as "páginas" responsáveis por editar, adicionar, deletar e seja lá o que for do seu site, PORÉM, somente para isso! Quem cuidará da apresentação (HTML, CSS, Javascript etc..) é a view, portanto não saia dando echo dentro do controller a não ser que seja para debugar ou coisa do tipo (como agora) :)

 

Já que os métodos são como "páginas" vamos ver como acessá-los, vamos acessar "teste" primeiro:

 

http://127.0.0.1/blog/noticias/teste

 

Aparecerá um erro, pois ainda não temos a View deste método, porém você ainda verá no topo "Lógica para a "página" teste do site", ótimo! Funcionou como esperávamos. Agora vamos ver como o Cake chegou até o seu método "teste".

 

Em cinza é a pasta do CakePHP, em azul é o nosso controller e em vermelho nosso método.

Legal né? E tudo com URL's amigáveis.

 

Portanto, se você não tiver utilizando rotas o comportamento padrão para acessar as URL's será este:

 

http://127.0.0.1/blog/controller/método

 

Aí você me pergunta: E se alguém colocar mais alguma coisa depois do método?

E eu respondo a você =P: Vai ser passado como parâmetro para o método! Considere a seguinte URL:

 

http://127.0.0.1/blog/categorias/deletar/5/outro_parametro (...)

 

Isso mapearia para algo como isso:

 

<?php
class CategoriasController extends AppController {
 var $name = 'Categorias';

 function deletar($id , $segundo_parametro){
    // Faz coisas com $id e $segundo_parametro
 }
}
?>

Maneiro....

Agora vamos acessar o método index:

 

http://127.0.0.1/blog/noticias

 

Ué! Mas cadê o método "index" ali no final?

Pois é, todo método chamado "index" é considerado como método padrão, portanto o seu uso na URL é opcional =D

Usando o Scaffold no CakePHP

 

Vamos ver o seu magnífico Scaffold.

Não irei falar o que é o scaffold, deixarei você ver =O

 

Delete ou comente todos os métodos do controller "Noticias", e coloque a propriedade $scaffold, veja como deve ficar:

 

<?php

class NoticiasController extends AppController {

var $name = 'Noticias';

var $scaffold;

}

?>

 

Fazendo isso você tem um sistema CRUD completo.... tem dúvidas? Acesse e veja você mesmo:

 

http://127.0.0.1/blog/noticias

 

Incrível não? Veja, na index tem uma lista de todos os registros adicionados e é possivel pela visualizar, editar, deletar e também adicionar as noticias, clique no link "New Noticia" e adicione algumas para brincar.

 

Aqui vai uma screen de como deverá ficar caso você esteja com preguissa de fazer você mesmo =P

 

 

Exemplo de scaffold

 

Ele é bem legal, porém só deve ser usado em modo de desenvolvimento, para debug e etc..., pois além de ser mais limitado doque o uso de métodos normais, ele deixa a aplicação pesada, portanto, usem com moderação =D

 

Bom, é isso aí! No próximo veremos mais sobre a View, e depois de ja ter pego toda base, realmente iniciaremos a contrução do nosso bloguizinho, até a próxima pessoal! o/

 

Fonte: http://lucaspelegrino.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra boa contribuição

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.