<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diego Henrique &#187; Zend Framework</title>
	<atom:link href="http://www.diegoholiveira.com/blog/tag/zend-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diegoholiveira.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 08 Jan 2010 11:53:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Publicando um projeto desenvolvido em ZF em um shared host</title>
		<link>http://www.diegoholiveira.com/blog/2010/01/08/publicando-um-projeto-desenvolvido-em-zf-em-um-shared-host/</link>
		<comments>http://www.diegoholiveira.com/blog/2010/01/08/publicando-um-projeto-desenvolvido-em-zf-em-um-shared-host/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 11:45:01 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=179</guid>
		<description><![CDATA[Para a grande maioria que utiliza um shared host, publicar um projeto desenvolvido com Zend Framework pode ser uma dor de cabeça, pois a estrutura recomendada de diretórios pede que a pasta da sua aplicação e do framework fiquem um nivel abaixo do nivel da pasta publica (wwwroot ou public), e muitos shared hosts não [...]]]></description>
			<content:encoded><![CDATA[<p>Para a grande maioria que utiliza um shared host, publicar um projeto desenvolvido com Zend Framework pode ser uma dor de cabeça, pois a estrutura recomendada de diretórios pede que a pasta da sua aplicação e do framework fiquem um nivel abaixo do nivel da pasta publica (wwwroot ou public), e muitos shared hosts não permitem que você faça isso.</p>
<p>Uma das formas de resolver este problema sem mudar toda a estrutura recomendada pelo ZF é colocar toda a estrutura da forma como é gerada pelo Zend Tool (ou criada manualmente) no diretório raiz do servidor web e usar um .htaccess para redirecionar todas as requisições para o ZF de forma correta. O .htaccess ficaria assim:</p>
<div class="codesnip-container" >RewriteEngine on<br />
RewriteRule    ^$ public/    [L]<br />
RewriteRule    (.*) public/$1 [L]</div>
<p>Estas regras simplesmente direcionam todas as requisições da raiz do seu diretório web para o diretório public que contem o index.php que inicializa a aplicação. Solução simples e que funciona muito bem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2010/01/08/publicando-um-projeto-desenvolvido-em-zf-em-um-shared-host/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traduzindo as mensagens do componente Zend Validate</title>
		<link>http://www.diegoholiveira.com/blog/2009/11/19/traduzindo-as-mensagens-do-componente-zend-validate/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/11/19/traduzindo-as-mensagens-do-componente-zend-validate/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 19:31:53 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=170</guid>
		<description><![CDATA[Começamos a pouco tempo um projeto para traduzir e manter um repositório com as mensagens de tradução do Zend Validate. O projeto que já conta com 3 colaboradores alem de mim, já percorreu uma boa trilha (ainda há muito o que fazer). Vou mostrar aqui como usar as mensagens traduzidas do nosso repositório. O primeiro [...]]]></description>
			<content:encoded><![CDATA[<p>Começamos a pouco tempo um projeto para traduzir e manter um repositório com as mensagens de tradução do Zend Validate. O projeto que já conta com 3 colaboradores alem de mim, já percorreu uma boa trilha (ainda há muito o que fazer). Vou mostrar aqui como usar as mensagens traduzidas do nosso repositório.</p>
<p>O primeiro passo, obvio, é fazer o download dos arquivos no github. Após isso, no seu bootstrap, adicione um método _initTranslate e no escopo dele instancie o Zend Translate passando por parâmetro o arquivo baixando do repositório, após isso defina sua instância do Zend Translate como padrão para o componente Zend_Validate_Abstract, como no exemplo abaixo:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">class</span> Bootstrap <span class="kw2">extends</span> Zend_Application_Bootstrap_Bootstrap<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> _initTranslate<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$translate</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Translate<span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;gettext&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; APPLICATION_PATH <span class="sy0">.</span> <span class="st_h">&#8216;/../data/translate/validate/pt_br.mo&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zend_Validate_Abstract<span class="sy0">::</span><span class="me2">setDefaultTranslator</span><span class="br0">&#40;</span><span class="re0">$translate</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span></div>
</div>
<p>Prontinho, agora todas as suas mensagens de validação estarão em português.</p>
<p>Ah, se você quiser colaborar com o projeto, entre em contato, toda ajuda é sempre bem vinda. <img src='http://www.diegoholiveira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/11/19/traduzindo-as-mensagens-do-componente-zend-validate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tradução para as validações do Zend Framework</title>
		<link>http://www.diegoholiveira.com/blog/2009/11/13/traducao-para-as-validacoes-do-zend-framework/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/11/13/traducao-para-as-validacoes-do-zend-framework/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 12:16:30 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=165</guid>
		<description><![CDATA[Estou disponibilizando a todos os arquivos de tradução das mensagens do Zend Framework, inclusive peço a ajuda de quem estiver utilizando pra podermos deixarmos este arquivo sempre atualizado, ou seja, colaborações são muito bem vindas. Para downloads e colaborações: http://github.com/diegoholiveira/Zend-Validate&#8212;Messages-pt-br Em breve irei postar um tutorial sobre como usar este arquivo.]]></description>
			<content:encoded><![CDATA[<p>Estou disponibilizando a todos os arquivos de tradução das mensagens do Zend Framework, inclusive peço a ajuda de quem estiver utilizando pra podermos deixarmos este arquivo sempre atualizado, ou seja, colaborações são muito bem vindas.</p>
<p>Para downloads e colaborações: <a href="http://github.com/diegoholiveira/Zend-Validate---Messages-pt-br">http://github.com/diegoholiveira/Zend-Validate&#8212;Messages-pt-br</a></p>
<p>Em breve irei postar um tutorial sobre como usar este arquivo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/11/13/traducao-para-as-validacoes-do-zend-framework/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Usando o Ez Components com o Zend Framework</title>
		<link>http://www.diegoholiveira.com/blog/2009/08/10/usando-o-ez-components-com-o-zend-framework/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/08/10/usando-o-ez-components-com-o-zend-framework/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 01:48:55 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Ez Components]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=157</guid>
		<description><![CDATA[Nenhum framework é perfeito, todos sabemos disso, e exatamente por isso em alguns casos torna-se necessario juntar peças de um e de outro pra poder obter um bom resultado. Em busca de um bom componente pra trabalhar com geração de graficos acabei encontrando o framework / biblioteca Ez Components, pra quem não conheçe eu recomendo [...]]]></description>
			<content:encoded><![CDATA[<p>Nenhum framework é perfeito, todos sabemos disso, e exatamente por isso em alguns casos torna-se necessario juntar peças de um e de outro pra poder obter um bom resultado.<br />
Em busca de um bom componente pra trabalhar com geração de graficos acabei encontrando o framework / biblioteca Ez Components, pra quem não conheçe eu recomendo muito dar uma olhada: <a href="http://ezcomponents.org">http://ezcomponents.org</a>. No Ez temos uma otima biblioteca de graficos, e decidi por fim a usa-la no meu projeto.</p>
<p>Para integra-la com o Zend Framework é muito simples, visto que o ZF facilita muito as coisas. Depois de ter feito o download copie a pasta do Ez Componentes para pasta library da sua aplicação.<br />
Após isso abra o arquivo de inicialização da sua aplicação, como eu estou usando o ZF 1.8 meu arquivo chama-se Bootstrap.php, porem se você tiver usando o Zf 1.7 ou anterior a ideia é a mesma.</p>
<p>No meu bootstrap eu já tinha um metodo de inicialização pro autoloader, chamado _initAutoloader, que configura o autoload padrão do ZF, neste mesmo incrementei o autoload do Ez Componentes, ficando assim:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">protected <span class="kw2">function</span> _initAutoloader<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Autoloader dos recursos padrões</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$autoloader</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Application_Module_Autoloader<span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;namespace&#8217;</span> &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8221;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;basePath&#8217;</span>&nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> APPLICATION_PATH<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Configurando o autoloader do EzComponents</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">require_once</span> <span class="st_h">&#8216;ezc/Base/src/base.php&#8217;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$loader</span> <span class="sy0">=</span> Zend_Loader_Autoloader<span class="sy0">::</span><span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$loader</span><span class="sy0">-&gt;</span><span class="me1">pushAutoloader</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;ezcBase&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;autoload&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st_h">&#8216;ezc&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>O que  metodo pushAutoloader faz é registrar o metodo estatico autoload da classe ezcBase como autoloader padrão para as classes que inicial com ezc, e isso é feito usando a função spl_autoload_register() da SPL.</p>
<p>Prontinho. Agora é só usar o Ez Components a vontade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/08/10/usando-o-ez-components-com-o-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validando formulários com Zend Form, jQuery e Ajax.</title>
		<link>http://www.diegoholiveira.com/blog/2009/05/21/validando-formularios-com-zend-form-jquery-e-ajax/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/05/21/validando-formularios-com-zend-form-jquery-e-ajax/#comments</comments>
		<pubDate>Fri, 22 May 2009 02:44:53 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=149</guid>
		<description><![CDATA[Sabemos que validar formulários hoje em dia é uma obrigação de todo bom desenvolvedor. E não validar apenas no cliente usando javascript, mas validar também no servidor. Validação é o primeiro de muitos passos para tornar sua aplicação mais segura. Uma técnica que eu acabei descobrindo recentemente e estou usando bastante é juntar o poder [...]]]></description>
			<content:encoded><![CDATA[<p>Sabemos que validar formulários hoje em dia é uma obrigação de todo bom desenvolvedor. E não validar apenas no cliente usando javascript, mas validar também no servidor. Validação é o primeiro de muitos passos para tornar sua aplicação mais segura.</p>
<p>Uma técnica que eu acabei descobrindo recentemente e estou usando bastante é juntar o poder do componente Zend_Form com o beleza do jQuery, o que me trouxe resultados muito bons, principalmente nos quesitos qualidade e desenvolvimento ágil.</p>
<p>Para demostrar essa técnica que eu estou utilizando eu vou partir do pressuposto que você já esta familiarizado com o ambiente do Zend Framework. Partindo disso, vou mostrar o código simples do formulário de cadastro:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span></p>
<p><span class="kw2">class</span> Cadastro_Form <span class="kw2">extends</span> Zend_Form <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">setAttrib</span><span class="br0">&#40;</span><span class="st_h">&#8216;id&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;cadastro&#8217;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-&gt;</span><span class="me1">setAction</span><span class="br0">&#40;</span><span class="st_h">&#8216;/index/index&#8217;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-&gt;</span><span class="me1">setMethod</span><span class="br0">&#40;</span><span class="st_h">&#8216;post&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">addElement</span><span class="br0">&#40;</span> <span class="st_h">&#8216;text&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;nome&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Nome&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;required&#8217;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;validators&#8217;</span>&nbsp; &nbsp; <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;NotEmpty&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;StringLength&#8217;</span><span class="sy0">,</span> <span class="kw4">false</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>0<span class="sy0">,</span> 60<span class="br0">&#41;</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">addElement</span><span class="br0">&#40;</span><span class="st_h">&#8216;text&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;email&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;E-mail&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;required&#8217;</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;validators&#8217;</span> &nbsp; <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;NotEmpty&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;EmailAddress&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">addElement</span><span class="br0">&#40;</span> <span class="st_h">&#8216;submit&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;submit&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;ignore&#8217;</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Entrar&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getElement</span><span class="br0">&#40;</span><span class="st_h">&#8216;submit&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">removeDecorator</span><span class="br0">&#40;</span><span class="st_h">&#8216;label&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Agora que nosso formulário de cadastro já é um componente do projeto, vamos fazer as paginas, vou supor aqui que estamos trabalhando no controller index, portando criaremos duas actions para que nosso controller aqui fique da seguinte maneira:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">class</span> IndexController <span class="kw2">extends</span> Zend_Controller_Action <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co4">/** Nesta action iremos exibir o formulario */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> indexAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co4">/** Nesta action iremos receber o dados por ajax para validação */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> validarAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Temos o básico para começarmos a trabalhar. Agora a ideia é validarmos estes dados na tela do cliente via ajax, para que antes do cliente submeter os dados ele consiga visualizar os possíveis erros e já corrigi-los. Lembrando também que isso NÃO descarta a validação no servidor.</p>
<p>Vamos ver como fica nosso metodo indexAction():</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">public</span> <span class="kw2">function</span> indexAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span> <span class="sy0">=</span> <span class="kw2">new</span> Cadastro_Form<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">isPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">isValid</span><span class="br0">&#40;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span> <span class="sy0">=</span> <span class="st_h">&#8216;Formulario valido&#8217;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span> <span class="sy0">=</span> <span class="st_h">&#8216;Ops. Formulario invalido.&#8217;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">populate</span><span class="br0">&#40;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">form</span> <span class="sy0">=</span> <span class="re0">$form</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>E agora nossa index.phtml</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="sy1">?&gt;</span><br />
&lt;p&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/p&gt;<br />
<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">form</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></div>
</div>
<p>Não podemos esquecer de adicionar a biblioteca jQuery a nossa camada view, pois ela irá nos ajudar muito no processo, vejamos o nosso código javascript para a validação:</p>
<div class="codesnip-container" >
<div class="javascript codesnip" style="font-family:monospace;">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#submit&#8217;</span><span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">&#8216;click&#8217;</span><span class="sy0">,</span> <span class="kw2">function</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> nome <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="st0">&#8216;#nome&#8217;</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> email <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="st0">&#8216;#email&#8217;</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $.<span class="me1">ajax</span><span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; url<span class="sy0">:</span> <span class="st0">&#8216;/index/validar&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type<span class="sy0">:</span> <span class="st0">&#8216;post&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataType<span class="sy0">:</span> <span class="st0">&#8216;json&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data<span class="sy0">:</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nome<span class="sy0">:</span> nome<span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email<span class="sy0">:</span> email<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; success<span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span>data<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;.form-errors&#8217;</span><span class="br0">&#41;</span>.<span class="me1">remove</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>data <span class="sy0">==</span> <span class="kw2">true</span><span class="br0">&#41;</span> <span class="kw3">alert</span><span class="br0">&#40;</span> <span class="st0">&#8216;Passou&#8230;&#8217;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>campo <span class="kw1">in</span> data<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span><span class="sy0">+</span>campo<span class="br0">&#41;</span>.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&#8216;&lt;ul id=&quot;&#8217;</span><span class="sy0">+</span>campo<span class="sy0">+</span><span class="st0">&#8216;_errors&quot; class=&quot;form-errors&quot;&gt;&lt;/ul&gt;&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>mensagem <span class="kw1">in</span> data<span class="br0">&#91;</span>campo<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span><span class="sy0">+</span>campo<span class="sy0">+</span><span class="st0">&#8216;_errors&#8217;</span><span class="br0">&#41;</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#8216;&lt;li&gt;&#8217;</span><span class="sy0">+</span>data<span class="br0">&#91;</span>campo<span class="br0">&#93;</span><span class="br0">&#91;</span>mensagem<span class="br0">&#93;</span><span class="sy0">+</span><span class="st0">&#8216;&lt;/li&gt;&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Como vocês podem ver, nosso método validar irá retornar um objeto json para o jQuery poder trabalhar, e com o for iremos percorrer este objeto colocando cada mensagem em seu devido lugar. É um bom método por não fazer você ter que escrever duas validações, uma para javascript e outra para php. Você escreve apenas uma e utiliza em ambas as validações.</p>
<p>Agora nosso método validar:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">public</span> <span class="kw2">function</span> validarAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">isXmlHttpRequest</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span> <span class="sy0">=</span> <span class="kw2">new</span> Cadastro_Form<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">processAjax</span><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Como vocês viram, devido ao nosso componente de formulário já está pronto tudo ficou muito mais simples, com apenas algumas linhas validamos e retornamos o resultado para o javascript poder exibir ao usuário.</p>
<p>O resultado desta combinação é muito interessante, pois mantem nossa aplicação modularizada, de forma que para adicionar novos campos no nosso formulário de cadastro não é necessário se preocupar com html e validação javascript, basta editar o componente Cadastro_Form.</p>
<p>Qualquer duvida deixa nos comentários ai que vamos trocando uma ideia. <img src='http://www.diegoholiveira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Referencias:</p>
<p>http://framework.zend.com/manual/en/zend.form.html</p>
<p>http://framework.zend.com/manual/en/zend.validate.html</p>
<p>http://docs.jquery.com/Ajax</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/05/21/validando-formularios-com-zend-form-jquery-e-ajax/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Zend Framework: Surviving The Deep End</title>
		<link>http://www.diegoholiveira.com/blog/2009/01/04/zend-framework-surviving-the-deep-end/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/01/04/zend-framework-surviving-the-deep-end/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 23:55:47 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=77</guid>
		<description><![CDATA[Já no primeiro dia do ano temos boas noticias pros usuarios do Zend Framework: Pádraic Brady lançou um livro online sobre o Zend Framework. O livro não esta completo ainda, ate o momento ele já publicou dois capitulos. Vale a pena dar uma conferida e esperar pelos proximos capitulos. Site do livro: http://www.survivethedeepend.com/ Indice do [...]]]></description>
			<content:encoded><![CDATA[<p>Já no primeiro dia do ano temos boas noticias pros usuarios do Zend Framework: Pádraic Brady lançou um livro online sobre o Zend Framework. O livro não esta completo ainda, ate o momento ele já publicou dois capitulos. Vale a pena dar uma conferida e esperar pelos proximos capitulos.</p>
<p>Site do livro: <a href="http://www.survivethedeepend.com/">http://www.survivethedeepend.com/</a><br />
Indice do livro: <a href="http://www.survivethedeepend.com/zendframeworkbook/en/1.0/">http://www.survivethedeepend.com/zendframeworkbook/en/1.0/</a><br />
Blog do autor: <a href="http://blog.astrumfutura.com/">http://blog.astrumfutura.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/01/04/zend-framework-surviving-the-deep-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.6</title>
		<link>http://www.diegoholiveira.com/blog/2008/09/02/zend-framework-16/</link>
		<comments>http://www.diegoholiveira.com/blog/2008/09/02/zend-framework-16/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 19:38:18 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=27</guid>
		<description><![CDATA[Acabou de sair a versão final do Zend Framework 1.6! Uma das novidades é que agora existem duas distribuições: - Full (13.6 MB): Contem o Dojo, testes e demos. - Minimal (3.5 MB): Contem apenas o ZF. Note que neste pacote tambem é possivel usar o Dojo integrado, porem este precisa ser baixado a parte, [...]]]></description>
			<content:encoded><![CDATA[<p>Acabou de sair a versão final do Zend Framework 1.6!</p>
<p>Uma das novidades é que agora existem duas distribuições:</p>
<p>- Full (13.6 MB): Contem o Dojo, testes e demos.</p>
<p>- Minimal (3.5 MB): Contem apenas o ZF. Note que neste pacote tambem é possivel usar o Dojo integrado, porem este precisa ser baixado a parte, enquanto no pacote full ele já esta incluso.</p>
<p>Outra novidade que eu gostei é o Zend Captcha, que vai trazer mais poder ainda ao Zend Form, assunto do meu post anterior.</p>
<p>[update]<br />
Duas novidades que eu só vi agora:</p>
<p>- Upload: o ZF permite fazer upload atraves do componente Zend Form e Zend File Transfer. Vou testar mais esses componentes e quem sabe vira um post aqui.</p>
<p>- Agora o manual esta disponivel em PDF para download, porem não sei porque ele não esta disponivel na pagina do framework, e sim no site da Zend, aqui: <a href="http://www.zend.com/community/downloads" target="_blank">http://www.zend.com/community/downloads</a><br />
[/update]</p>
<p>Downloads e mais informações: <a href="http://framework.zend.com/download/current/">http://framework.zend.com/download/current/</a></p>
<p>Referência: <a href="http://devzone.zend.com/article/3812-Zend-Framework-1.6-Now-Available" target="_blank">http://devzone.zend.com/article/3812-Zend-Framework-1.6-Now-Available</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2008/09/02/zend-framework-16/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução ao Zend Form</title>
		<link>http://www.diegoholiveira.com/blog/2008/08/24/introducao-ao-zend-form/</link>
		<comments>http://www.diegoholiveira.com/blog/2008/08/24/introducao-ao-zend-form/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 16:10:00 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=25</guid>
		<description><![CDATA[Um dos melhores componentes do Zend Framework é sem duvidas o Zend Form, inclusive me arrisco a dizer que usar o ZF sem usa-lo é perda de tempo. O Zend Form nos ajuda a gerar formulários html e a valida-los com muita eficacia, e sua operação é extremamente simples. Vou dar um exemplo de como [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos melhores componentes do Zend Framework é sem duvidas o Zend Form, inclusive me arrisco a dizer que usar o ZF sem usa-lo é perda de tempo. O Zend Form nos ajuda a gerar formulários html e a valida-los com muita eficacia, e sua operação é extremamente simples. Vou dar um exemplo de como gerar um formulário de login usando-o. Eu não gosto muito de ficar falando de teoria portanto vou mostrar o exemplo todo comentado e espero que ele demostre com clareza o funcionamento do Zend Form.</p>
<p>Nota.: Eu estou partindo do pressuposto que você já tem um ambiente do ZF configurado, caso contrario recomendo a leitura deste artigo do Julio Martini no Imasters:<br />
<a href="http://imasters.uol.com.br/artigo/4609/php/zend_framework_-_uma_visao_geral/" target="_BLANK">http://imasters.uol.com.br/artigo/4609/php/zend_framework_-_uma_visao_geral/</a></p>
<p>Arquivo do Controller: IndexController.php</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="co4">/**<br />
&nbsp;* Controlador principal<br />
&nbsp;*/</span><br />
<span class="kw2">class</span> IndexController <span class="kw2">extends</span> Zend_Controller_Action <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co4">/**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Metodo Index<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> indexAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Inclui o componente Zend Form</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">require</span><span class="br0">&#40;</span> <span class="st_h">&#8216;Zend/Form.php&#8217;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Instancia um novo formulario</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Form<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Configura o action e o method (para os dados serão enviados e através de que metodo (get ou post)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">setAction</span><span class="br0">&#40;</span><span class="st_h">&#8216;/index/index&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setMethod</span><span class="br0">&#40;</span><span class="st_h">&#8216;post&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Instancia um campo do tipo texto</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_email</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Form_Element_Text<span class="br0">&#40;</span><span class="st_h">&#8216;usuario_email&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Define o label do campo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;E-mail: &#8216;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Define que o campo é obrigatório (por padrão esta opção é falso)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;required&#8217;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Adiciona filtros para o campo (estes filtros são elementos do Zend Validate)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;validators&#8217;</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;NotEmpty&#8217;</span><span class="sy0">,</span> <span class="co1">// Define que este campo não pode ser vazio</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;EmailAddress&#8217;</span> <span class="co1">// Define que este campo deve ser um endereço de email valido</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Adiciona as mensagens de erro</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_email</span><span class="sy0">-&gt;</span><span class="me1">getValidator</span><span class="br0">&#40;</span><span class="st_h">&#8216;NotEmpty&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setMessages</span><span class="br0">&#40;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zend_Validate_NotEmpty<span class="sy0">::</span><span class="me2">IS_EMPTY</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Este campo não pode ser vazio!&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_email</span><span class="sy0">-&gt;</span><span class="me1">getValidator</span><span class="br0">&#40;</span><span class="st_h">&#8216;EmailAddress&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setMessages</span><span class="br0">&#40;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zend_Validate_EmailAddress<span class="sy0">::</span><span class="me2">INVALID</span> <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Email invalido!&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Existem varias outras validções de email, inclusive de host valido!</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Obs.: Por padrão as mensagens de erro do Zend Validate estão em inglês, em outro post mostrarei como traduzi-las</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// de uma só vez através do componente Zend Translate</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Instancia um campo do tipo password</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_senha</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Form_Element_Password<span class="br0">&#40;</span><span class="st_h">&#8216;usuario_senha&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Define o label do campo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Senha: &#8216;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Define que o campo é obrigatorio (por padrão esta opção é falso)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;required&#8217;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Adiciona os filtos</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;validators&#8217;</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;NotEmpty&#8217;</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="co1">// Não pode ser vazio</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Definimos aqui o tamanho da string para um valor entre 6 e 20 caracteres</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;StringLength&#8217;</span><span class="sy0">,</span> <span class="kw4">false</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>6<span class="sy0">,</span> 20<span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Adiciona as mensagens de erro</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_senha</span><span class="sy0">-&gt;</span><span class="me1">getValidator</span><span class="br0">&#40;</span><span class="st_h">&#8216;NotEmpty&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setMessages</span><span class="br0">&#40;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zend_Validate_NotEmpty<span class="sy0">::</span><span class="me2">IS_EMPTY</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Este campo não pode ser vazio!&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_senha</span><span class="sy0">-&gt;</span><span class="me1">getValidator</span><span class="br0">&#40;</span><span class="st_h">&#8216;StringLength&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setMessages</span><span class="br0">&#40;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zend_Validate_StringLength<span class="sy0">::</span><span class="me2">TOO_SHORT</span> &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Senha deve ter mais de 6 caracteres&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zend_Validate_StringLength<span class="sy0">::</span><span class="me2">TOO_LONG</span>&nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;String deve ter menos de 20 caracteres&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Instancia um campo do tipo checkbox para persistir a sessão do usuário</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_mantemLogado</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Form_Element_Checkbox<span class="br0">&#40;</span><span class="st_h">&#8216;usuario_mantemLogado&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Define o label do campo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Permanecer logado&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Aqui invertemos a ordem com que ele exibirá o label, deixando o mesmo após o campo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$usuario_mantemLogado</span><span class="sy0">-&gt;</span><span class="me1">getDecorator</span><span class="br0">&#40;</span><span class="st_h">&#8216;label&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setOption</span><span class="br0">&#40;</span><span class="st_h">&#8216;placement&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;APPEND&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Por padrão o Zend Form gera o label antes do campo (PREPEND)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Instancia um botão do tipo submit</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$submit</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Form_Element_Submit<span class="br0">&#40;</span><span class="st_h">&#8216;submit&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Define o label do botão</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Entrar&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Aqui removemos a tag &lt;label&gt;, ela não é necessária em um botão</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$submit</span><span class="sy0">-&gt;</span><span class="me1">removeDecorator</span><span class="br0">&#40;</span><span class="st_h">&#8216;label&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Adiciona os campos ao formulário</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">addElements</span><span class="br0">&#40;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span> <span class="re0">$usuario_email</span><span class="sy0">,</span> <span class="re0">$usuario_senha</span><span class="sy0">,</span> <span class="re0">$usuario_mantemLogado</span><span class="sy0">,</span> <span class="re0">$submit</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Vamos verificar se o formulário foi enviado</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">isPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Obtém os dados do formulário</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$data</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Verifica se o formulário é valido</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">isValid</span><span class="br0">&#40;</span> <span class="re0">$data</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Aqui você define a ação de um formulário valido</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Caso o formulário não seja valido continuamos a executar a pagina para exibir as mensagens de erro do usuário</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Coloca o formulário na view</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">form</span> <span class="sy0">=</span> <span class="re0">$form</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span></div>
</div>
<p>Arquivo da View: index/index.php</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="co1">// Renderiza o formulário.</span><br />
<span class="kw1">echo</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">form</span><span class="sy0">;</span><br />
<span class="co1">// Simples. Não?</span></div>
</div>
<p>Observações: Uma maneira melhor de trabalhar com o Zend Form é estendendo a classe Zend_Form e configurando seu formulário como um objeto, desta forma:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="co4">/**<br />
&nbsp;* Cria um formulário estendendo a classe Zend Form<br />
&nbsp;*/</span><br />
<span class="kw2">Class</span> Form_Login <span class="kw2">extends</span> Zend_Form <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="co4">/**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Inicializa e configura o formulário<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Por padrão todas as classes do Zend Framework usam um método init logo após o construtor,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* é uma forma de estender as classes sem sobrescrever o construtor original<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Configuração do form aqui!</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span></div>
</div>
<p>É isso ai. Teve duvidas? Deixa nos comentários ai.</p>
<p>Referências:</p>
<p>http://framework.zend.com/manual/en/zend.form.html</p>
<p>http://framework.zend.com/manual/en/zend.validate.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2008/08/24/introducao-ao-zend-form/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
