ב"ה

Blog do Adler Medrado

Blog do Adler Medrado

Jun 24 / 8:19am

Promoção do PHPSP te ajuda a tirar certificações Zend

O PHPSPCast traz uma promoção em conjunto com seu último podcast que é
sobre certificação. Os prêmios, logicamente são vouchers pra
certificação. Se você ganhar não vai precisar gastar pelo menos US$160
pra ser um certificado, nós daremos vários certificados. O melhor? Não
é sorteio!

Responda o questionário de conhecimentos gerais de PHP. Se você
acertar tudo, leva. E quem for acertando, vai levando até nossos
vounchers acabarem. Mas são poucos!!! São 2 vounchers de ZCE e dois
vounchers de ZCF !

Corra e responda! Os ganhadores serão mostrados no POST, por enquanto;
ninguém ganhou ainda! Então beixe/escute o podcast e responda o
questionário. Mas não vai ser fácil! =]
Boa sorte!
Veja as regras (detalhadas) e o questionário aqui: http://phpsp.org.br/?p=1229

Loading mentions Retweet
Filed under  //  certificacao   comunidade   php   promocao  

Comments (0)

May 27 / 5:18pm

Treinamento de Zend Framework em Brasília - CONFIRMADO

Alô Rapaziada.

Para aqueles que ultimamente tem me perguntado quando vai fechar turma de Zend Framework, com satisfação eu anuncio que uma turma está CONFIRMADA para iniciar dia 31/05/2010, ou seja, na próxima segunda-feira.

Se você tem interesse em aprender Zend Framework, num curso hands-on, essa é uma ótima oportunidade.

Abraços.
Loading mentions Retweet
Filed under  //  PHP   Treinamento   Zend Framework  

Comments (0)

May 22 / 11:32am

Zend Framework Tutorial Series Capitulo 3

Depois de muito tempo eu consegui voltar a este tutorial e a partir deste capítulo eu vou mudar um pouco a estratégia, vocês irão perceber que este capítulo será menor do que os anteriores porque eu vou buscar escrever capítulos menores em uma frequência maior. Espero que dê certo.

Introdução

Neste capítulo eu mostrarei um pouco do Zend_Form e algumas coisas que são possíveis de implementar usando ele.

O Zend_Form é um componente que nos permite tratar formulários HTML como objetos PHP, simplificando o uso quando precisamos filtrar e validar dados provenientes de formulários.

Eu sempre fui contra criar objetos PHP que simplesmente cuspissem código HTML sem trazer nenhum benefício como filtragem, validações, etc., isso pra mim não fazia nenhum sentido e por isso que eu demorei para me interessar pelo Zend_Form, até que vi que a proposta era diferente, e eles nos traz diversos benefícios como além das já mencionadas funcionalidades de filtro e validação, nos permite trabalhar com Subforms de maneira bem simples, agrupar elementos de formulários e também fazer herança de formulários, depois de ver isso eu não deixei de usa-lo e sempre incentivo quem usa Zend Framework a experimenta-lo. 

Uma das premissas de segurança em desenvolvimento web é: Filter Input, Escape Output (Filtrar Entradas, Tratar Saídas) porque nós não devemos confiar nos usuários pois como iremos saber que as informações que estão sendo enviadas à aplicação são corretas ou mal-intencionadas? Se você não ouviu falar sobre SQL Injection, XSS, CSRF, etc., é bom buscar maiores informações a respeito e aí você vai entender o motivo que leva muitos desenvolvedores a serem paranóicos. :-) 
Pretendo escrever um capítulo deste tutorial que aborde apenas aspectos de segurança com Zend Framework, até lá vou mostrar apenas como filtrar dados usando Zend_Form.

Bom, vamos lá.

Nosso primeiro form será o de cadastro de usuário e o trabalho sujo quem vai fazer para nós será o Zend_Tool então, de dentro do diretório raíz de sua app, digite o comando:

zf create form User

Este comando criará um diretório chamado forms dentro do diretório application e se você analisar o conteúdo deste diretório, verá um arquivo chamado User.php com o seguinte conteúdo:

 
<?php

class Application_Form_User extends Zend_Form
{

    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
    }

}

Pronto. Agora, dentro do método init() nós podemos configurar o nosso formulário. 
Este formulário terá os seguintes campos:

  • username: Nome do usuário do sistema, login de acesso.
  • fullName: Nome completo do usuário
  • email: Endereço de e-mail do sujeito
  • password: Senha de acesso ao sistema
  • submit: Botão de submit :-)

Se eu fosse criar esse formulário na mão, eu teria de validar no script PHP que recebesse estes dados para garantir que as informações estão de acordo com o que deve ser submetido e esse trabalho se torna chato depois de algum tempo trabalhando com desenvolvimento e é aí que o Zend_Form começa a nos dar uma força.
Para este formulário eu determinei tais filtros e validações:

  •  username
    •   O campo é obrigatório
    •   Qualquer tag deverá ser removida
    •   Espaços em branco das extremidades serão removidos
    •   Não pode ser submetido em branco/vazio
    •   Deverá contér entre 5 e 30 caracteres. 

  •  fullName
    •  O campo é obrigatório
    •  Qualquer tag deverá ser removida
    •  Espaços em branco das extremidades serão removidos
    •  Não pode ser submetido em branco/vazio
    •  Deverá contér entre 5 e 90 caracteres. 
 
  • email
    •  O campo é obrigatório
    •  Qualquer tag deverá ser removida
    •  Espaços em branco das extremidades serão removidos
    •  Deverá validar se o valor informado é compatível com um endereço de e-mail válido

  • - password
    •  O campo é obrigatório
    •  Qualquer tag deverá ser removida
    •  Espaços em branco das extremidades serão removidos
    •  Não pode ser submetido em branco/vazio
    •  Deverá contér entre 5 e 30 caracteres.

Vamos configurar nossa classe para atender a estes requisitos:

 
class Application_Form_User extends Zend_Form
{

    public function init()
    {

$username = new Zend_Form_Element_Text('username');
$username->setLabel('Usuário')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty')
  ->addValidator('StringLength', false, array(5,30));

$fullName = new Zend_Form_Element_Text('fullName');
$fullName->setLabel('Nome Completo')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty')
  ->addValidator('StringLength', false, array(5,90));

$email = new Zend_Form_Element_Text('email');
$email->setLabel('E-mail')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('EmailAddress');

$password = new Zend_Form_Element_Password('password');
$password->setLabel('Senha')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty')
  ->addValidator('StringLength', false, array(5,30));

$submit = new Zend_Form_Element_Submit('Salvar');

$this->addElements( array($username, $fullName, $email, $password, $submit) );

    }
}

Depois de ler os requisitos para nosso formulário fica fácil entender o código acima faz, mas vamos dar uma analisada rápida:

Para cada elemento do formulário nós criamos um objeto respectivo, por exemplo, para campos de texto nós usamos Zend_Form_Element_Text, para campo de senha nós usamos Zend_Form_Element_Password e individualmente em cada elemento nós determinamos quais filtros nós usaríamos por meio do método addFilter() e quais validações seriam feitas usando o método addValidator().

A diferença entre filters e validators é bem simples: Filtros alteram o valor do elemento e validadores checam se o valor do elemento possi certas características de acordo com o validador e retornam se o valor é válido ou não sem alterar seu valor.

Elementos

Obviamente os elementos de formulário mais comuns já existem no framework, qualquer elemento mais específico pode ser desenvolvimento sem muitas dificuldades. 

- button
- checkbox / multicheckboxes
- hidden
- image
- password
- radio
- reset
- select / multiselect
- submit
- text
- textarea

Filtros e Validadores

Os filtros e validadores considerados mais comuns também já fazem parte do pacote do Zend Framework, além daqueles que nós usamos no nosso formulário Users, nós temos os seguintes Validadores e Filtros à disposição.

Veja direto na fonte: 

Vamos colocar pra funcionar agora

Agora vamis pra parte mais legal que é ver o nosso formulário funcionando, para isso temos que instancia-lo no controller e adiciona-lo à nossa view. 

Controller:
$this->view->form = new Application_Form_User();

if ($this->getRequest()->isPost()) {
if ($this->view->form->isValid($this->_request->getPost())) {
// Salva no banco de dados ou seja lá o que for fazer com os dados provenientes do form
var_dump($this->_request->getPost());
} else {
$this->view->form->populate($this->_request->getPost());
}
}

Primeiramente nós criamos uma instância da nossa classe Application_Form_User (sim, este é o nome gerado automaticamente e é um padrão, portanto, não mude) e associamos ao nosso objeto Zend_View.
Em seguida obtemos o objeto que mantém as informações do request e verificamos se o request foi do método POST, se for post, verificamos se os dados do formulário são válidos e se o resultado for positivo, nós mostramos estes dados na tela (no próximo capítulo gravaremos no banco de dados), senão, nós renderizamos a tela novamente com os dados preenchidos no form e suas devidas mensagens de erro.

Em princípio as mensagens de erro estão em inglês e nós as alteraremos posteriormente quando trabalharmos com I18N e L10N.

Na camada de visão, basta fazer:

 echo $this->form;

Pronto. Seu form já pode ser usado.

O código-fonte que é gerado não agrada a todos, mas para mudar isso nós podemos usar os Decorators e deixar o código gerado da maneira que preferirmos, porém os decorators não são um assunto tão trivial e por isso eu não vou aborda-los neste capítulo. Se desejar conhecer mais: http://framework.zend.com/manual/1.10/en/zend.form.decorators.html

O código gerado foi esse:

 
<form enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form">
<dt id="username-label"><label for="username" class="required">Usuário</label></dt>
<dd id="username-element">
<input type="text" name="username" id="username" value=""></dd>
<dt id="fullName-label"><label for="fullName" class="required">Nome Completo</label></dt>
<dd id="fullName-element">
<input type="text" name="fullName" id="fullName" value=""></dd>
<dt id="email-label"><label for="email" class="required">E-mail</label></dt>
<dd id="email-element">
<input type="text" name="email" id="email" value=""></dd>
<dt id="password-label"><label for="password" class="required">Senha</label></dt>
<dd id="password-element">
<input type="password" name="password" id="password" value=""></dd>
<dt id="Salvar-label">&nbsp;</dt><dd id="Salvar-element">
<input type="submit" name="Salvar" id="Salvar" value="Salvar"></dd></dl></form>

Considerações Finais

Trabalhar com Zend_Form é muito simples e nos proporciona uma produtividade maior em nosso dia-a-dia, tenho trabalhado com ele diariamente e posso dizer que tem sido com muito sucesso.
Obviamente, há muito mais coisas para ver e este tutorial é apenas introdutório, durante nosso tutorial espero poder encaixar outras funcionalidades como Subform.

Espero que você tenha gostado de mais esse capítulo.

Ah, os fontes encontram-se no github.

Abraço.
Loading mentions Retweet
Filed under  //  framework   php   zend   zfseries  

Comments (9)

Apr 28 / 12:11pm

Treinamento de Zend Framework

Alô Moçada!


Para aqueles que sempre me perguntam quando haverá treinamento de Zend Framework, eu informo que tem novas turmas previstas na X25 Treinamentos e Consultoria que é a empresa onde ministro treinamentos de PHP e JAVA.

Entre estas turmas previstas, tem uma turma que está confirmada então se você tem interesse em aprender a usar o Zend Frameworkveja como se matricular e conheça mais sobre o treinamento.

Espero te ver lá.

Um grande abraço.
Loading mentions Retweet
Filed under  //  PHP   treinamento   Zend Framework  

Comments (0)

Apr 25 / 10:24am

Atualizem suas agendas

       
Click here to download:
Atualizem_suas_agendas_tags_ph.zip (50 KB)
Esse post é especial para aqueles que fazem parte da comunidade PHP brasileira e/ou estão buscando conhecer mais a linguagem.
 
Decidi postar aqui todos os eventos que tenho conhecimento que já foram divulgados por aí, colocando todos em um único ponto para que vocês possam analisar as datas com antecedência e começarem a se planejar.
 
Este ano, seguindo a tendência do ano passado, a nossa comunidade está bem servida de eventos que nos permitem aprofundar mais o nosso conhecimento em áreas que já conhecemos e também conhecer outras que ainda não tivemos oportunidade de trabalhar, além é claro, de fazer o tão importante networking. 
 
Bom, segundo estou sabendo, os seguintes eventos já estão confirmados:

Read the rest of this post »

Loading mentions Retweet
Filed under  //  eventos   php  

Comments (0)

Mar 2 / 4:59pm

Documentação do Zend Framework Atualizada

Estava agora a pouco no site do Zend Framework e ao observar a área de documentação eu percebi que estava um pouco diferente, melhor do que a última vez que eu tinha visto.
Eu não costumo acessar os docs diariamente então talvez eu esteja chegando um pouco atrasado, de qualquer maneira, como não vi e nem ouvi ninguém comentando a respeito eu estou publicando isto no meu blog para que os meus leitores possam aproveitar também.

A última vez que olhei, a documentação parecia um pouco desatualizada mas agora além de parecer mais atual ela está mais organizada tendo além do Quickstart, seções com exemplos de uso de componentes como Zend_Layout, Zend_Form_Decorators, Zend_Session, Zend_Auth, Zend_Acl, Zend_Paginator, Zend_Search_Lucene, entre outros e além desses exemplos de uso, tem todo o material de referência dos componentes.
Bom, fica a dica. Caso tenha se interessado, veja com seus próprios olhos e aproveite.

 

Loading mentions Retweet
Filed under  //  php   zend framework  

Comments (0)

Feb 16 / 6:21am

Zend Framework Tutorial Series - Capítulo 2

Tudo bem?

Demorou um pouco para eu publicar este capítulo pois infelizmente eu tive alguns contratempos nas últimas semanas, mas de qualquer forma, é muito bom saber que você se interessou por esta série de tutoriais e voltou para continuar implementando um sistema de exemplo.

Recapitulando

No primeiro capítulo desta série eu mostrei como configurar o seu ambiente de desenvolvimento para utilizar o Zend Framework com o Zend_Tool.

        Reveja o Capítulo 1 do tutorial.

Uma observação importante: Eu estou utilizando a versão 1.10 do Zend Framework. Certifique-se que você também esteja utilizando esta mesma versão para melhor aproveitamento do tutorial. Mantenha sua estrutura atualizada, ok?

Model, View, Controller

O Zend Framework utiliza o pattern MVC, que permite que as camadas das aplicações sejam separadas em camadas.

Basicamente, as camadas do MVC são 3: Model (Modelo), View (Visão) e Controller (Controle) e cada uma dessas camadas devem implementar especificamente aquilo que diz respeito à funcionalidade em questão; Mas você deve estar se perguntando: "WTF esse cara tá falando? Até agora ele falou, falou e falou mas não disse diretamente o que é o Model, o View e nem o Controller". E eu responderia: "Relaxa... , vou falar sobre isso agora.".

Enfim, Vamos lá:

  • A camada de modelo é onde nós implementamos a lógica de negócios, acesso a tabelas e banco de dados e a manipulação direta (INSERT, UPDATE, DELETE) desses dados.
  • A camada de visão é aquela onde nós recebemos informação fornecida pelo usuário e também onde nós mostramos informações ao usuário proveniente da camada de modelo por exemplo.
  • A camada de controle é a camada que nós usamos para unir os dados das duas camadas citadas anteriormente. Por exemplo: No controller nós podemos trabalhar com dados provenientes do modelo, prepara-lo e em seguida passa-los para a view que apresentará estas informações ao usuário; Nós podemos também por meio do controller, receber informações da camada de visão e passa-las à camada de modelo. Eu costumo dizer que esta camada trabalha como uma espécie de atravessador.
Não é minha intenção e nem pretensão falar tudo sobre MVC aqui e sim somente aquilo que é necessário para que você possa implementar uma aplicação utilizando este pattern em conjunto com o Zend Framework e mostrar como este framework o implementa.

Caso você queira saber mais sobre MVC siga os links abaixo:


O MVC com Zend Framework

Eu prefiro mostrar como este padrão é implementado no Zend Framework na prática pois este é meu jeito e é isso que pretendo fazer neste tutorial, então, neste capítulo, sempre que eu for trabalhar com uma das camadas eu vou deixar isso bem explícito.

Será implementado algum projeto neste Tutorial?

Sim e como já existem vários tutoriais por aí que implementam Blog, Agenda, etc, nós implementaremos um sistema básico de contas a pagar utilizando o SQLite como SGBD.

O que será mostrado neste capítulo?

Neste capítulo eu mostrarei como implementar os controllers e as views dentro da estrutura do Zend Framework.

Após este capítulo você irá:
  • Entender o conceito de MVC aplicado ao Zend Framework.
  • Criar Controllers, Actions e Views usando Zend Framework.
Estrutura de uma aplicação

No Zend Framework o fluxo de uma aplicação é determinado pelo controller, qualquer tipo de request, desde um request para mostrar um formulário na tela até um request AJAX é definido em nosso controller e isso se dá por meio das Actions.

Imagine uma aplicação padrão PHP (daquelas antigas, macarrônicas), onde o fluxo da aplicação é determinado por arquivos PHP distintos. Por exemplo:
  • form_incluir_usuario.php -> Form de inclusão de usuários
  • incluir_usuario.php -> Incluir usuário
  • form_alterar_usuario.php -> Form de alteração de usuários
  • alterar_usuario.php -> Alterar usuário
  • excluir_usuario.php -> Excluir usuário
  • listar_usuarios.php -> Listar usuários
Com Zend Framework as coisas não são mais feitas assim pois ele é um framework orientado a objetos e este fluxo é definido nas classes de controller, ou seja, seguindo a mesma idéia do exemplo acima de cadastro de usuários, um controller do Zend Framework poderia ser mais ou menos assim:
  • formAction -> Tela com formulário para inclusão e alteração de dados de usuário
  • saveAction -> Realiza os procedimentos necessários para salvar um usuário
  • deleteAction -> Exclui usuário
  • indexAction -> Tela padrão que neste caso mostrará a listagem de usuários cadastrados.
Além de organizarmos melhor o código utilizando Actions Controllers, nós também podemos manter nossas URLs mais organizadas e de fácil leitura pois o Zend Framework implementa o conceito de URLs amigáveis então com o ZF é raro (digo raro porque já vi isso ocorrer) de se ver URLs como por exemplo: http://meusite.com/users.php?operacao=Alterar&id=10; Com o Zend Framework, esta URL seria mais ou menos assim: http://meusite.com/users/alterar/id/10 e ela indica que: Será feita uma requisição HTTP para o controller users (UsersController) mais especificamente para a action alterarAction e serão passados parâmetros via method GET, neste caso o parâmetro chama-se id e seu valor é 10.

Depois de se acostumar com esse padrão você provavelmente nunca mais irá desejar usar a forma de Query String antiga novamente. 

Revendo a estrutura da aplicação

Quando nós criamos a estrutura do nosso projeto no capítulo 1, o Zend_Tool criou dentro do diretório application/controllers um arquivo PHP chamado IndexController.php; Este arquivo é criado automaticamente pois ele funciona como o controller de entrada da aplicação; Se fizermos uma comparação novamente com aquela estrutura de desenvolvimento mais antiga, o IndexController funcionaria como o index.php de uma aplicação ou seja, sempre que a URL do sistema/site for chamada sem informar uma tela específica, o sistemá apontará para a tela padrão do sistema.

No Controller nós também podemos ter uma ação padrão, ou seja, sempre que o controller for chamado sem especificar qual ação deve ser executada, a ação padrão será chamada; Esta ação é chamada de indexAction.

Segue abaixo o conteúdo do arquivo IndexController.php que foi gerado pelo Zend_Tool:

<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

}

A primeira coisa que observamos é que o nome da classe é exatamente igual ao nome do arquivo (excluíndo o sufixo .php) e isso é uma regra. 
Outro ponto importante no nome do arquivo e consequentemente da classe é que ele segue a convenção que o nome inicia com a primeira letra maiúscula e as demais minúsculas, se houver nomes compostos o segundo nome inicia com a letra maiúscula e as demais seguem minúsculas.

Nesta classe nós também podemos observar que ela vem com dois métodos: init e indexAction; O método init funciona como um método construtor que nesta classe não é utilizado pois ele é implementado na superclasse e recebe parâmetros diversos que seriam bem complicados de serem passados por nós na subclasse, então quando for necessário executar algum procedimento no ato da criação da instância do controller, este procedimento deverá encontrar-se no método init.

O método indexAction por sua vez é a ação padrão deste controller e será executado sempre que o IndexController for solicitado sem explicitar nenhuma action.
Outra coisa que também fica bem clara no código é que todo método que for uma action deve ter Action logo após o nome do action ou seja, se você em algum controller quisesse ter uma action chamada farofa, o nome dela na classe seria farofaAction.

Nas actions nós também devemos seguir a convenção camel case da mesma forma que o nome da classe só que o nome do método sempre inicia com letra minúscula.

Para conhecer mais os padrões e convenções do Zend Framework, siga este link: http://framework.zend.com/manual/en/coding-standard.html

View Templates

Como vimos anteriormente, actions podem (e são na maioria dos casos) se relacionar a telas do nosso projeto, para isso nós temos que ter uma view template correspondente para que possa ser renderizada e apresentada na tela para o usuário.

Estas templates encontram-se no diretório applications/views/scripts e as templates são agrupadas de acordo com o controller ao qual se relacionam então, dentro do diretório scripts haverão diretórios com os nomes dos controllers, por exemplo, index e dentro deste serão armazenados os arquivos de template; Cada arquivo possui o nome do action em questão, então o nosso indexAction está representado lá como index.phtml e se tivéssemos criado o farofaAction, o arquivo seria farofa.phtml.

Outro ponto importante é que todos os templates possuem o sufixo phtml.  Isso pode ser modificado mas a princípio nós deixaremos assim.

Criando o UsersController


Da mesma forma que nós usamos o Zend_Tool para criarmos o projeto nós o usaremos para criar o nosso primeiro controller. Para isso basta digitar em seu terminal/prompt do DOS:

zf create controller users

Após executar este comando, o resultado será parecido com o trecho abaixo:

Creating a controller at /usr/local/zend/apache2/htdocs/zf-series/application/controllers/UsersController.php
Creating an index action method in controller Users
Creating a view script for the index action method at /usr/local/zend/apache2/htdocs/zf-series/application/views/scripts/users/index.phtml
Creating a controller test file at /usr/local/zend/apache2/htdocs/zf-series/tests/application/controllers/UsersControllerTest.php
Updating project profile '/usr/local/zend/apache2/htdocs/zf-series/.zfproject.xml'

Pronto! Nosso novo controller está criado, o nome dele é UsersController.php e ele também implementou para nós o indexAction e seu template. Dê uma olhada nos diretórios para você ver a mágica.

Execute em seu browser: http://zf-series/users e veja o resultado. Veja se foi algo parecido com a figura abaixo. Bacana né?
Se você visualizar o código deste controller você verá que ele tem a estrutura idêntica à do IndexController.

Como exercício, edite o arquivo de template index.phtml que está em application/views/scripts/users e coloque uma frase que te agrade lá. O meu ficou assim:


Agora, vamos fazer mais uma alteração no nosso action. Altere ele para ficar assim (Coloquei todo o código do controller para facilitar): 

<?php

class UsersController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
$this->view->minhaFrase = "Os programadores são a Elite da TI";
    }

}
No Controller nós temos acesso ao objeto Zend_View que é responsável pela camada de visão no Zend Framework e no objeto Zend_View nós adicionamos um atributo chamado minhaFrase que recebeu a frase que eu tinha colocado manualmente no template anteriormente.
Como nós estamos atribuindo este valor a uma propriedade do objeto de visão, nós poderemos utilizar este objeto na camada de visão e daí nós substituiremos o valor fixo pelo valor informado pelo controller. Vamos editar então o template index.phtml do controller UsersController:

<br /><br /><center><?php echo $this->minhaFrase ?></center>

Pronto. Como nós estamos acessando o objeto diretamente da view, então basta manipularmos o atributo minhaFrase que criamos quando estávamos no controller diretamente usando $this. 

Simples demais não é? 

Como exercício, crie mais alguns desses atributos na action em seu controller e mostre os valores em sua view. Beleza?

Criando um Layout com Zend_Layout

Quando nós desenvolvemos sites/sistemas web com PHP nós costumamos usar código que se repete por meio de includes não é mesmo? Dessa forma se um dia essas informações precisarem ser modificadas nós modificamos em apenas um local.

O Zend Framework nos provê um componente para facilitar este trabalho e eu digo facilitar porque ele vai nos poupar até mesmo o trabalho de ter de realizar o include dos arquivos que devem ser reaproveitados. 

Um caso bem comum é criarmos um arquivo chamado header.php (ou cabecalho.php) e outro chamado footer.php (ou rodape.php) e inclui-los em todas as páginas, certo? Bom, nós criaremos um layout com estas informações e todas as nossas telas serão mescladas com este layout e em seguida apresentado na tela para o usuário.

Vamos lá? Adivinha o que iremos usar agora? Acertou, o Zend_Tool.

Execute o seguinte comando em seu terminal/prompt do DOS:

zf enable layout

O resultado é o seguinte:

Layouts have been enabled, and a default layout created at /usr/local/zend/apache2/htdocs/zf-series/application/layouts/scripts/layout.phtml
A layout entry has been added to the application config file.

Isso tudo é muito lindo :D

Bom, vamos editar o arquivo que foi gerado em application/layouts/scripts/layout.phtml para deixa-lo mais ou menos assim:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Zend Framework Tutorial Series</title>
    <meta name="generator" content="TextMate http://macromates.com/">
    <meta name="author" content="Adler  Medrado">
    <!-- Date: 2010-02-15 -->
</head>
<body>
    <div id="header">
        <h1>Zend Framework Tutorial Series</h1>
    </div>
    <div id="content">
        <p>Este é o layout do nosso sistema. Em breve nós iremos modifica-lo.</p>
        <?php echo $this->layout()->content; ?>
    </div>
    <div id="footer">
        <p>&copy; 2010 - Adler Medrado - http://adlermedrado.com.br</p>
    </div>
</body>
</html>

No nosso layout nós definimos uma mensagem de título que está no header e uma mensagem de copyright no footer. Se você analisar bem este código, você verá que é feita uma chamada a um método chamado layout(); Este método é na verdade um Zend_View_Helper que faz a mesclagem do template do action que é executado no momento do request com o restante do layout. 

Não se preocupe com o Zend_View_Helper pois em outros capítulos nós abordaremos justamente este recurso.

Simples o uso do layout né? Como exercício, execute novamente http://zf-series/users e veja o resultado.

Considerações Finais

Neste capítulo nós abordamos um pouco do C e do V (Controllers e Views) do MVC. 
No próximo capítulo nós trabalharemos com formulários, filtraremos input, trataremos saídas e algumas cositas mas. 

Espero que você tenha aproveitado este capítulo e espero também reve-lo no próximo.

A propósito, eu criei um grupo de discussão no Google Groups para que aqueles que estão seguindo a série de tutoriais possam discutir os exercícios. Caso você deseje participar deste grupo basta inscrever-se em: http://groups.google.com/group/zend-framework-series-br

Os fontes do tutorial encontram-se no github. Acesse: http://github.com/adlermedrado/Zend-Framework-Tutorial-Series

Abraços e até o próximo capítulo.
Loading mentions Retweet
Filed under  //  framework   php   zend   zfseries  

Comments (15)

Dec 27 / 11:18am

Meu plugin adlercalendartranslator para Wordpress foi movido para o github

Opa!

Este post é somente para informar que o repositório para o plugin que converte datas do gregoriano para hebraico foi mudado para o github (aqui).

O atual repositório SVN continuará disponível mas eu não sei até quando por isso sugiro que o novo no github seja utilizado a partir de agora.

Para saber mais sobre o plugin: http://blog.adlermedrado.com.br/meu-primeiro-plugin-para-wordpress

Até mais.

Loading mentions Retweet
Filed under  //  calendar   hebrew   php   plugin   wordpress  

Comments (0)