<?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>BLOG::Nivaldo &#187; view_helper</title>
	<atom:link href="http://www.nivaldoarruda.com.br/tag/view_helper/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nivaldoarruda.com.br</link>
	<description>Tecnologias Web, PHP e Aquários</description>
	<lastBuildDate>Sun, 29 Aug 2010 23:59:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Zend Framework &#8211; Criando um View helper</title>
		<link>http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 12:45:46 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[helper]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[view helper]]></category>
		<category><![CDATA[view_helper]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=473</guid>
		<description><![CDATA[O blog está um pouco parado, então irei reanima-lo um pouco. Vou continuar seguindo a linha MVC do ZF e hoje vou abordar um dos principais problemas que essa implementação pode trazer: Views sujas com códigos. O conceito de MVC nasceu justamente para manter as views (interface com o usuário) completamente separadas dos códigos e [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando Action Helpers'>Zend Framework &#8211; Criando Action Helpers</a> <small>Conforme eu havia prometido aqui, hoje eu estarei dando continuidade...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators'>Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators</a> <small>php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/05/04/zend-framework-180/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.0'>Zend Framework 1.8.0</a> <small>Só para não passar em branco. No ultimo dia 30...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p>O blog está um pouco parado, então irei reanima-lo um pouco. Vou continuar seguindo a linha MVC do ZF e hoje vou abordar um dos principais problemas que essa implementação pode trazer: Views sujas com códigos.</p>
<p>O conceito de MVC nasceu justamente para manter as views (interface com o usuário) completamente separadas dos códigos e das regras de negócio. Com o ZF ela já fica um pouco poluída (para quem estava acostumado com smarty, o primeiro contato é um desespero só). Então programadores, vamos tentar manter essa distinção e vamos fazer mais uso dos &#8220;Views helpers&#8221;.</p>
<p><strong>O que são os Views Helpers?</strong></p>
<p>Views Helpers são classes que fazem o papel de abstrair os códigos que possivelmente ficarão na view. Seja um foreach para preencher dados de tabela ou de combobox, seja para formatação de nomes/datas ou qualquer outro fim. Fora tirar todo esse código sujo da sua view, você ainda pode reaproveita-las para outras telas.</p>
<p><strong>Criando o Helper</strong></p>
<p>No padrão MVC do zend, existe uma pasta chamado views, dentro de views existe mais 2 pastas (scripts e helpers). Crie seu arquivo dentro da pasta helpers, com o nome do seu helper. Em nosso exemplo: Data.php<br />
<div id="attachment_477" class="wp-caption aligncenter" style="width: 146px"><a href="http://www.nivaldoarruda.com.br/wp-content/uploads/2009/08/Zend-Framework-MVC-Diretorios.jpg"><img src="http://www.nivaldoarruda.com.br/wp-content/uploads/2009/08/Zend-Framework-MVC-Diretorios.jpg" alt="Zend Framework - MVC - Diretorios" title="Zend Framework - MVC - Diretorios" width="136" height="88" class="size-full wp-image-477" /></a><p class="wp-caption-text">Zend Framework - MVC - Diretorios</p></div></p>
<p><strong>Codificando</strong></p>
<pre class="brush: php">&lt;?php
/*
 * Helper que retorna o uma data em vários formatos diferentes.
 * ex: echo $this-&gt;Data(&#039;2009-18-11&#039;)-&gt;extenso;
 * ex: echo $this-&gt;Data(&#039;2009-18-11&#039;)-&gt;pt_br;
 * ex: echo $this-&gt;Data(&#039;2009-18-11 09:11:00&#039;)-&gt;hora;
 * @author Nivaldo Arruda - nivaldo@gmail.com
 * @see www.nivaldoarruda.com.br
 * @version 1.0
*/
class Zend_View_Helper_Data extends Zend_View_Helper_Abstract
{
    public $extenso;
    public $pt_br;
    public $hora;

    public function data($data)
    {
        list($ano, $mes, $dia) = explode(&quot;-&quot;, substr($data, 0, 10));

        $this-&gt;extenso = $this-&gt;diasemana(&quot;$ano-$mes-$dia&quot;);
        $this-&gt;pt_br = &quot;$dia/$mes/$ano&quot;;

        if(strlen($data)&gt;10){
            list($hora, $minuto, $segundo) = explode(&quot;:&quot;, substr($data, 11, 8));
            $this-&gt;hora = &quot;$hora:$minuto:$segundo&quot;;
        }

        return $this;
    }

    /**
     * Retorna o dia da semana, por extenso e em português, correspondente
     * a data informada por parametro (no padrão aaaa-mm-dd).
     *
     * @param Date $data
     * @return String
     */
    public function diasemana($data){
        list($ano, $mes, $dia) = explode(&quot;-&quot;, $data);

        $diasemana = date(&quot;w&quot;, mktime(0, 0, 0, $mes, $dia, $ano));

        switch($diasemana) {
            case 0: $diasemana = &quot;Domingo&quot;;
                    break;
            case 1: $diasemana = &quot;Segunda-Feira&quot;;
                    break;
            case 2: $diasemana = &quot;Terça-Feira&quot;;
                    break;
            case 3: $diasemana = &quot;Quarta-Feira&quot;;
                    break;
            case 4: $diasemana = &quot;Quinta-Feira&quot;;
                    break;
            case 5: $diasemana = &quot;Sexta-Feira&quot;;
                    break;
            case 6: $diasemana = &quot;Sábado&quot;;
                    break;
        }

        return $diasemana;

    }
}
?&gt;</pre>
<p><strong>Entendendo</strong></p>
<p>Perceba a linha da assinatura da classe:</p>
<p>class Zend_View_Helper_<strong>Data</strong> extends Zend_View_Helper_Abstract </p>
<p>O nome do arquivo &#8220;Data&#8221; Deve ser igual ao sulfixo do nome da classe (tome sempre cuidado com o case-sensitive).</p>
<p>O nome do método principal, também deve ser igual ao do arquivo, mas esse em caixa-baixa (minusculo):  &#8220;data&#8221;</p>
<pre class="brush: php">public function data($data)</pre>
<p>Para rodar esse helper, em uma de suas views, execute o código que está comentado no cabeçalho da classe:</p>
<p><strong>Exemplo de uso</strong></p>
<pre class="brush: php">
echo $this-&gt;Data(&#039;2009-18-11&#039;)-&gt;extenso;
echo $this-&gt;Data(&#039;2009-18-11&#039;)-&gt;pt_br;
echo $this-&gt;Data(&#039;2009-18-11 09:11:00&#039;)-&gt;hora;
</pre>
<p>Agora use a imaginação e mantenha suas Views limpas!</p>
<p>Próximo passo: <em>Action Helpers!</em></p>
<p>^^</p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando Action Helpers'>Zend Framework &#8211; Criando Action Helpers</a> <small>Conforme eu havia prometido aqui, hoje eu estarei dando continuidade...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators'>Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators</a> <small>php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/05/04/zend-framework-180/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.0'>Zend Framework 1.8.0</a> <small>Só para não passar em branco. No ultimo dia 30...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
