Ir para conteúdo

Arquivado

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

lucaswxp

[TUTORIAL] Iniciando no CakePHP - Entendendo o View [parte 4]

Recommended Posts

Continuando com os tutorial sobre CakePHP, agora veremos o que são os Views, como utilizá-las e fazê-las interagir com o Controller.

Pré-requisitos

 

* Ter o módulo mod_rewrite habilitado

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

* Lido a parte 3

 

Conteúdo

Começando

 

É pessoal, estamos quase passando do básico para finalmente construirmos o nosso bloguizinho, só falta você entender o view =P

 

View é responsável pelo conteúdo que o usuário receberá no final de tudo, ou seja: O HTML, CSS, Javascript etc...

Para simplificar: Você busca os dados pelo Model, o Controller envia para o View que por sua vez exibe estes dados. Percebeu como cada um tem sua responsabilidade? Este é o M-V-C =P

 

É simples, não tem segredo =D

 

Vamos ver um exemplo então. Vamos adicionar novamente a action (lembra que eu falei? Action é o mesmo que Método) index do Controller notícias faça isso:

 

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

 function index(){
 $meu_nome = 'Lucas Pelegrino';
 $this->set('nome' , $meu_nome);
 }
}
?>

Bom, da linha 1 até a 5 nada é novidade. Porém o que está dentro do action index é =)

Criamos uma variável chamada $meu_nome, logo após utilizamos um método do controller chamado "set", com este método nós definimos uma variável chamada "nome" com o valor de $meu_nome para dentro do view, portanto o método set serve para você setar dados para view.

 

NOTA: O segundo parâmetro pode ser omitido, contando que o primeiro seja um array associativo

 

Ok! Já aprendemos a enviar dados para o view, agora vamos ver como recebe-los =)

 

Para cada controller deve existir uma pasta para ele na pasta "app/view", portanto o controller noticias deve ter a pasta "app/view/noticias/", categorias deve ter "app/view/categorias/", produtos deve ter "app/view/produtos/".

 

Agora que já criamos a pasta no view referente ao controller noticias, dentro desta pasta crie um arquivo chamado index.ctp, este arquivo será o view da action index. Bem intuitivo não? Veja mais algums exemplos:

 

1. A action adicionar do controller artigos terá como view app/view/artigos/adicionar.ctp

2. A action deletar do controller artigos terá como view app/view/artigos/deletar.ctp

3. A action exibir do controller videos terá como view app/view/videos/exibir.ctp

4. A action desativar do controller usuarios terá como view app/view/usuarios/desativar.ctp

 

Todo view deve ter a extensão .ctp (Cake Template), isso é importante! Existe uma forma de mudar isso, porém como o tutorial deve ser simples não entrarei em detalhes.

 

Ok! Voltando ao curso. No view que você acaba de criar (index.ctp) digite o seguinte:

 

<h2>Olá!</h2>

<p>Eu me chamo <?php echo $nome ?></p>

 

Como você percebeu, estamos usando uma variavel que não foi definida aqui, porém ela foi definida no controller com o método set.

Agora acesse:

 

http://127.0.0.1/blog/noticias

 

E você verá:

 

Olá!

Eu me chamo Lucas Pelegrino

 

Ótimo! Funcionou! Mas de uma olhada no titulo... não ta legal, vamos arrumar isso. No controller, para colocar o titulo da página você pode setar a propriedade $pageTitle:

 

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

 function index(){
 $this->pageTitle = 'Bloguizinho'; // Este será o titulo para o action index

 $meu_nome = 'Lucas Pelegrino';
 $this->set('nome' , $meu_nome);
 }
}
?>

Ótimo! Agora esta com um titulo maneiro =D, mas assim teríamos que definir o Controller:$pageTitle em todas as páginas, e já que as páginas sempre terão o mesmo titulo, não existe necessidade de repetir isso, apenas faça:

 

<?php
class NoticiasController extends AppController {
 var $name = 'Noticias';
 var $pageTitle = 'Bloguizinho'; // Todas as páginas terão este titulo

 function index(){
 $meu_nome = 'Lucas Pelegrino';
 $this->set('nome' , $meu_nome);
 }
}
?>

Agora sim!

Alterando o layout

 

Como você pode ver o cake já vem com o layout por padrão, porém você, uma hora ou outra, irá querer usar um próprio, então vamos criar um!

Crie o arquivo app/view/layouts/default.ctp e coloque o seguinte conteúdo:

 

<html>
 <head>
 <title><?php echo $title_for_layout; // pegamos o titulo que setamos no controller ?></title>
 <?php echo $scripts_for_layout // pegamos aqui possiveis scripts que iremos inserir no decorrer da app ?>
 </head>
 <body>
 <?php echo $content_for_layout; // pegamos o conteudo (views) ?>
 </body>
</html>
<?php echo $cakeDebug; // exibimos o debuger ?>

O cake já tem algumas variavel definidas no view, está bem comentato, portanto só irei falar de $scripts_for_layout. Enquando você está desenvolvendo, você pode querer inserir um script, porém você teria que abrir o layout e ir lá na tag head e adicionar este script, e isso é demorado, então, para não perder tempo, coloque $scripts_for_layout onde você quer que os scripts aparecem, assim, no meio do desenvolvimento você pode imprimir um código em qualquer lugar que e ele aparecerá no topo! (utilizando um método claro) :)

 

Bom... como eu disse, todos os views devem ter extensão .ctp, e layouts não são exceções. O arquivo que estiver como nome "default" dentro da pasta de layouts será carregado pelo cake, veja você mesmo seu lindo layout sem formatação alguma:

 

http://127.0.0.1/blog/noticias

 

Se você quiser utilizar outro layout, tem que dizer para o cake qual utilizar:

 

<?php
class NoticiasController extends AppController {
 var $name = 'Noticias';
 var $pageTitle = 'Bloguizinho';
 var $layout = 'nome_do_layout_a_carregar'; // Coloque o nome do arquivo do layout a carregar sem a extensão!

 function index(){
 $meu_nome = 'Lucas Pelegrino';
 $this->set('nome' , $meu_nome);
 }
}
?>

Deste modo você carregaria o layout app/view/layouts/nome_do_layout_a_carregar.ctp =)

 

É isso aí! No próximo tutorial vamos começar a realmente criar o bloguizinho :)

Qualquer dúvida comente ou olhe na API.

 

Fonte: http://lucaspelegrino.com/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom lucas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Lucas to querendo começar a utilizar o cakephp e irei precisar desses tutos então capricha ai.

Abs

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.