lucaswxp 22 Denunciar post Postado Dezembro 11, 2009 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
Mário Monteiro 179 Denunciar post Postado Dezembro 20, 2009 Muito bom lucas Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Dezembro 22, 2009 Vlw =) Assim que der posto a parte 5 Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Dezembro 23, 2009 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
lucaswxp 22 Denunciar post Postado Dezembro 23, 2009 Hehe Pode deixar, vou fazer o melhor xD Compartilhar este post Link para o post Compartilhar em outros sites
tuxsmall 0 Denunciar post Postado Junho 26, 2014 Olá! Onde estão a parte 1, 2 e 3? Compartilhar este post Link para o post Compartilhar em outros sites