<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1652202062659345410</id><updated>2024-09-15T17:50:58.841-07:00</updated><category term="php"/><category term="zend"/><category term="views"/><category term="framework"/><category term="informatica"/><category term="programação"/><category term="zend framework 2"/><category term="zf2"/><category term="helpers"/><category term="rewrite"/><category term="biblioteca"/><category term="controller"/><category term="enviar"/><category term="formulario"/><category term="helper"/><category term="htaccess"/><category term="public"/><category term="tabelas"/><category term="zend form"/><category term="Zend_Application_Resource_Cachemanager"/><category term="action"/><category term="actions"/><category term="allowwhitespace"/><category term="banco de dados"/><category term="baseurl"/><category term="bootstrap"/><category term="classe"/><category term="composer"/><category term="criar"/><category term="css"/><category term="customizar"/><category term="dados"/><category term="diretorio"/><category term="espaços em brancos"/><category term="estático"/><category term="extensão"/><category term="forms"/><category term="formularios"/><category term="forum"/><category term="garçom"/><category term="javascript"/><category term="layout"/><category term="link"/><category term="login"/><category term="magento"/><category term="menu"/><category term="models"/><category term="mudança"/><category term="multiplos"/><category term="multiplos banco de dados"/><category term="navigator"/><category term="pasta"/><category term="relacionamento"/><category term="resources"/><category term="rotas"/><category term="router"/><category term="routes"/><category term="tools"/><category term="validators"/><category term="windows"/><category term="zend auth"/><category term="zend_menu"/><category term="zend_navigator"/><category term="zendbrasil"/><category term="zf2tool"/><title type='text'>Bar do Zend</title><subtitle type='html'>Zend framework em grandes doses</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><blogger:adultContent>true</blogger:adultContent><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-865473211948958830</id><published>2013-08-25T18:53:00.000-07:00</published><updated>2013-08-25T18:53:01.745-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="htaccess"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="public"/><category scheme="http://www.blogger.com/atom/ns#" term="rewrite"/><category scheme="http://www.blogger.com/atom/ns#" term="zend framework 2"/><category scheme="http://www.blogger.com/atom/ns#" term="zf2"/><title type='text'>Esta é minha casa mesmo ? :: Tirando o &#39;public&#39; da url no Zend Framework 2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Quem já já experimentou o &lt;i&gt;Zend&lt;/i&gt; ( tanto o 1 quanto o 2 ) sabe que toda a festa rola na pasta &#39;&lt;b&gt;public&lt;/b&gt;&#39; da raiz de seu projeto, já que o &#39;&lt;b&gt;index.php&lt;/b&gt;&#39; fica lá.&lt;br /&gt;
&lt;br /&gt;
Isso é uma situação muito chata, porque primeiramente, é feio aquele &#39;&lt;b&gt;public&lt;/b&gt;&#39; na url, e segundo porque é mais seguro manter o &#39;&lt;b&gt;index.php&lt;/b&gt;&#39; dentro da pasta &#39;&lt;b&gt;public&lt;/b&gt;&#39;.&lt;br /&gt;
&lt;br /&gt;
eu já tinha ensinado aqui no &lt;i&gt;Bar do Zend&lt;/i&gt; como se procede para tirar o &#39;&lt;b&gt;public&lt;/b&gt;&#39; no caso do &lt;i&gt;ZF1,&amp;nbsp;&lt;/i&gt; então&lt;i&gt; &lt;/i&gt;agora é a vez de fazer o mesmo no &lt;i&gt;ZF2&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Para isso, tenha certeza que seu seu servidor web esteja configurado com o module &#39;&lt;b&gt;rewrite&lt;/b&gt;&#39;. Uma googlada por ai você pode achar a configuração certa para seu caso.&lt;br /&gt;
&lt;br /&gt;
Certificando que o servidor está ok, criamos um arquivo &#39;&lt;b&gt;.htaccess&lt;/b&gt;&#39; na raiz do projeto:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;RewriteEngine On
RewriteBase /meuprojetozf2
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
O endereço da raiz do projeto é aquele logo após seu domínio ( ex: http:///meusite.com/meuprojetozf2 ), ou após &#39;&lt;b&gt;localhost&lt;/b&gt;&#39; ( ex: http://localhost/meuprojetozf2 ) se estiver num servidor local. Caso o projeto esteja já na raiz do dominio, uma barra &#39;&lt;b&gt;/&lt;/b&gt;&#39; já é suficiente.&lt;br /&gt;
&lt;br /&gt;
Agora, criemos na raiz do projeto uma arquivo &#39;&lt;b&gt;index.php&lt;/b&gt;&#39; :&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;&amp;lt;?php
define(&#39;RUNNING_FROM_ROOT&#39;, true);
include &#39;public/index.php&#39;;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
E pronto, pode acessar seu projeto e a sua url vai estar livre do &#39;&lt;b&gt;public&lt;/b&gt;&#39;.&lt;br /&gt;
Agora, um porém. Todos os arquivos que estão contidos na pasta &#39;&lt;b&gt;public&lt;/b&gt;&#39;&amp;nbsp; ( como os css, imagens e javascript ) deverão ser ter seus endereços acrecidos de &#39;&lt;b&gt;public&lt;/b&gt;&#39;, pois para fins práticos, o aplicativo está rodando a partir da raiz, e não da pasta &#39;&lt;b&gt;public&lt;/b&gt;&#39;.&lt;br /&gt;
&lt;br /&gt;
Então é isso, até a próxima.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/865473211948958830/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2013/08/esta-e-minha-casa-mesmo-tirando-o.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/865473211948958830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/865473211948958830'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2013/08/esta-e-minha-casa-mesmo-tirando-o.html' title='Esta é minha casa mesmo ? :: Tirando o &#39;public&#39; da url no Zend Framework 2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-4744783909820346965</id><published>2013-08-18T15:35:00.000-07:00</published><updated>2013-08-19T05:13:03.217-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="rotas"/><category scheme="http://www.blogger.com/atom/ns#" term="routes"/><category scheme="http://www.blogger.com/atom/ns#" term="zend framework 2"/><category scheme="http://www.blogger.com/atom/ns#" term="zf2"/><title type='text'>Novas biritas : Introdução ao Zend Framework 2 - Parte 3 - 1 - Rotas, links e menus</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Chegamos agora ao ponto onde você criou centenas de &#39;controllers&#39; e outras dezenas de &#39;actions&#39;, e então faz-se necessário colocar tudo isso em menus ou links por ai.&lt;br /&gt;
Para conseguir organizar essa fauna de conteudos, o zf2 disponibiliza as &#39;routes&#39; ( rotas em inglês, para quem não sabe ).&lt;br /&gt;
As &#39;routes&#39; servem para fazer um mapeamento ou busca nas urls o caminho do conteudo desejado.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Para fazer uma rota, você precisa editar o arquivo do seu módulo &#39;module/Meumodulo/config/module.config.php&#39; .&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Dentro desse arquivo, você encontrara o array&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;return array(
    ...
    &#39;router&#39; =&amp;gt;array(
          &#39;routes&#39; =&amp;gt; array(
                     ...
          ),
    ),
    ...
);
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
A variável &#39;router&#39; é a variável que define o roteamento das páginas. Um modo de ficar mais simples de organizar esse array ( que pode ficar enorme conforme vai acrescentando coisas ),&amp;nbsp; é separar o array do router assim:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;// Você declara e preenche a variável &#39;$router&#39; antes do &#39;return&#39;
$router = array(
          &#39;routes&#39; =&amp;gt; array(
                     ...
          ),
);

// E aqui o array de configuração do módulo
return array(
    ...
    &#39;router&#39; =&amp;gt; $router,
    ...
);
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Bom, sabendo da localização, vamos ver como usar isso. Primeiro temos de criar uma rota, que consiste na seguinte forma&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$minharota= array(          
    &#39;type&#39; =&amp;gt; &#39;Zend\Mvc\Router\Http\Literal&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39; =&amp;gt; &#39;/endereco/de/minha/rota&#39;,
        &#39;defaults&#39; =&amp;gt; array(
            &#39;controller&#39; =&amp;gt; &#39;Meumodulo\Controller\Meucontroller&#39;,
            &#39;action&#39;     =&amp;gt; &#39;minhaaction&#39;,
        ),
    ),
);
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Explicando:&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;type :&lt;/b&gt; define o tipo da rota. Aqui é o tipo &#39;Literal&#39;, que nada mais é que dizer explicitamente qual o módulo, controller e action do conteúdo.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;route :&lt;/b&gt; esse é um alias, um endereço qualquer que você mesmo escolhe que deve ser digitado na url para acessar o conteúdo. Se você quiser que o conteúdo do action &#39;index&#39; do controller &#39;index&#39; do modulo &#39;application&#39; apareça na url &#39;/texto&#39; ou &#39;/esta/e/uma/url/estupidamente/grande&#39; ,&amp;nbsp; basta colocar na variável route e digitar na url esses endereços bizarros que vai aparecer o conteúdo de &#39;/application/index/index/&#39;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;defaults&lt;/b&gt; : aqui é definido o endereço REAL do conteúdo que deve ser acessado. Nas rotas literais, esse é o único endereço da rota, nas rotas do tipo &#39;segment&#39; esse é um valor a ser chamado por padrão, isso será explicado daqui a pouco.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;controller e action&lt;/b&gt; : bom, está claro o que são esses valores. Com ênfase na parte do controller, onde você precisa definir o módulo da qual o controller pertence.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Bom, assim que você cria sua rota, você adiciona aos &#39;routes&#39;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$router = array(
    &#39;routes&#39; =&amp;gt; array(
        &#39;minharota1&#39; =&amp;gt; $minharota1,
        &#39;minharota2&#39; =&amp;gt; $minharota2,
        ...
    ),
);
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
O nome &#39;minharota1&#39; e a variável &#39;$minharota1&#39; e seguinte, não precisam ter o mesmo nome. Isso é uma padrão que eu adotei para facilitar a organização da configuração e melhor explicar nesse tutorial como funciona a coisa.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Na verdade você pode evitar essas variáveis e jogar como arrays puros diretamente na varável &#39;router&#39; da configuração.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Uma coisa imprescindível é definir uma rota literal para sua página inicial do aplicativo.&amp;nbsp; Sim, bom do zendo que não precisa ser necessariamente o &#39;application\index\index&#39; o endereço inicial, você pode definir uma route para a página inicial. No geral ela vem assim &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$home = array(
    &#39;type&#39; =&amp;gt; &#39;Zend\Mvc\Router\Http\Literal&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39; =&amp;gt; &#39;/&#39;,
        &#39;defaults&#39; =&amp;gt; array(
            &#39;controller&#39; =&amp;gt; &#39;Application\Controller\Index&#39;,
            &#39;action&#39;     =&amp;gt; &#39;index&#39;,
        ),
    ),
),
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
e o que define a página inicial não é o nome &#39;home&#39;, mas sim a variável &#39;route&#39; ser definida como &#39;/&#39; - o diretório raiz onde teremos&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$router = array(
    &#39;routes&#39; =&amp;gt; array(
        &#39;home&#39; =&amp;gt; $home,
        &#39;minharota1&#39; =&amp;gt; $minharota1,
        &#39;minharota2&#39; =&amp;gt; $minharota2,
        ...
    ),
);
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Agora, uma vez criadas as rotas e colocadas no config certo, você pode digitar os endereços definidos nas variáveis &#39;routes&#39; para testar.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
O tipo de rota literal é a mais simples, e boa para sites simples. Para sites um nível a mais de complexidade, os endereços são mais dinâmicos e envolve variáveis. Para isso existe a rota do tipo &#39;Segment&#39;.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
O tipo &#39;Segment&#39; segue a seguinte estrutura&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$minharotasegment= array(          
    &#39;type&#39; =&amp;gt; &#39;Zend\Mvc\Router\Http\Segment&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39; =&amp;gt; &#39;/algum/endereco[/:var]&#39;,
        &#39;constraints&#39; =&amp;gt; array(
            &#39;var&#39; =&amp;gt; &#39;[a-zA-Z0-9_-]*&#39;, // Define o regexp de busca desejado
        ),
        &#39;defaults&#39; =&amp;gt; array(
            &#39;controller&#39;    =&amp;gt; &#39;Meumodule\Controller\Meucontroller&#39;,
            &#39;action&#39;        =&amp;gt; &#39;meuaction&#39;,
            &#39;var&#39; =&amp;gt; &#39;123abc&#39;,
        ),
    ),
);
&lt;/pre&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Aqui como podemos ver, temos uma mudança na variável &#39;route&#39;. o termo &#39;[:var]&#39; define uma variável a ser digitada na url e tratada pelo zend no action &#39;meuaction&#39; do controller &#39;Meucontroller&#39; definido na variavel &#39;defaults&#39;. Ainda em &#39;defaults&#39;, definimos um valor padrão para &#39;var&#39; caso esse não tenha sido fornecido na url. Caso não precise de um valor padrão, basta apagar do &#39;defaults&#39;.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Agora, para pegar o valor de &#39;var&#39; da url, basta usar no controller definido no &#39;defaults&#39; o helper &lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$var = $this-&amp;gt;params(&#39;var&#39;);
&lt;/pre&gt;
&lt;br /&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
Podemos definir varias variáveis no route&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;&#39;route&#39; =&amp;gt; &#39;/algum/endereco[/:var1[/:var2[/:var3]]]&#39;,
&lt;/pre&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
e basta declará-las em &#39;constraints&#39; juntamente com o pattern desejado e no &#39;defaults&#39; os valores padrões.&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
Ainda podemos fazer um mix de rota com variáveis&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;&#39;route&#39; =&amp;gt; &#39;/trecho1[/:var1[/trecho2[/:var2[/trecho3[/:var3]]]]]&#39;, 
&lt;/pre&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
e qualquer outra combinação que lhe venha a cabeça.&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
Para entender o essa route, só ver que tudo que estiver entre colchetes &#39;&lt;b&gt;[ ]&lt;/b&gt;&#39; é considerado opcional, e tudo que vier depois do dois pontos &#39;&lt;b&gt;:&lt;/b&gt;&#39; é o nome da variável. Portanto, não escreva nada atrás do nome da variável que não seja o colchete de fechamento &#39;&lt;b&gt;]&lt;/b&gt;&#39;.&lt;br /&gt;
&lt;br /&gt;
Também podemos ( e na maioria das vezes vamos ) usar variáveis pré-definidas no zend. Duas delas são o &#39;:controller&#39; e o &#39;:action&#39;. Numa rota seriam usados assim:&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$minharotasegment=array(
    &#39;type&#39;    =&amp;gt; &#39;Zend\Mvc\Router\Http\Segment&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39;    =&amp;gt; &#39;/endereco/segment/[:controller[/:action]]&#39;,
        &#39;constraints&#39; =&amp;gt; array(
            &#39;controller&#39; =&amp;gt; &#39;[a-zA-Z][a-zA-Z0-9_-]*&#39;,
            &#39;action&#39;     =&amp;gt; &#39;[a-zA-Z][a-zA-Z0-9_-]*&#39;,
       	),
	&#39;defaults&#39; =&amp;gt; array(
            &#39;controller&#39; =&amp;gt; &#39;Meucontroller&#39;,
            &#39;action&#39;     =&amp;gt; &#39;meuaction&#39;, 
        ),
    ),
);
&lt;/pre&gt;
&lt;br /&gt;
onde vemos que podemos definir variáveis que chamem por um controller ou por um action na rota definida. Na verdade é isso que é feito por padrão no SkelettonApplication do Zend, ele define a rota da raiz &#39;&lt;b&gt;/[:controller[/:action]]&lt;/b&gt;&#39; onde a sequência digitada é o controller e o action, como sempre foi no zend, apenas que agora as rotas dão liberdade para você definir o caminho como você precisar com mais poder. Não que não desse para fazer isso no ZF1, mas que enquanto no ZF1 isso era apenas uma regalia, agora no ZF2 é rotineiro.&lt;br /&gt;
&lt;br /&gt;
Entremos na última parte sobre rotas nesse tutorial, as &lt;i&gt;subrrotas.&lt;/i&gt; As subrotas são parecidas com as rotas segment, mas na verdade você pode considerá-las como um &#39;subconjunto&#39; de uma rota pai que é segment ou literal. Uma subrota é definida assim:&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$minhasubrrota=array(
    &#39;type&#39;    =&amp;gt; &#39;Zend\Mvc\Router\Http\Literal&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39;    =&amp;gt; &#39;/endereco/da/subrrota&#39;,
        &#39;constraints&#39; =&amp;gt; array(
            &#39;controller&#39; =&amp;gt; &#39;Meumodulodasubrrota\Controller\Meucontrollerdasubrrota&#39;,
            &#39;action&#39;     =&amp;gt; &#39;meuactiondasubrota&#39;,
       	),
    ),
);
&lt;/pre&gt;
&lt;br /&gt;
enfim, você na verdade cria uma rota como qualquer outra, com a diferença que ela vai ser colocada aqui:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$minharota=array(
    &#39;type&#39; =&amp;gt; &#39;Zend\Mvc\Router\Http\Literal&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39;    =&amp;gt; &#39;/application&#39;,
        &#39;defaults&#39; =&amp;gt; array(
            &#39;__NAMESPACE__&#39; =&amp;gt; &#39;Application\Controller&#39;,
            &#39;controller&#39;    =&amp;gt; &#39;Index&#39;,
            &#39;action&#39;        =&amp;gt; &#39;index&#39;,
        ),
    ),
    &#39;may_terminate&#39; =&amp;gt; true,
    &#39;child_routes&#39; =&amp;gt; array(
        &#39;minhasubrota&#39; =&amp;gt; $minhasubrrota,
    ),
);
&lt;/pre&gt;
&lt;br /&gt;
Como funciona isso ? Você simplesmente vai digitar na url &#39;/endereco/da/rota&#39; que vai aparecer o conteudo do controller e action no default, mas se voce digitar &#39;/endereco/da/rota/endereco/da/surrota&#39; vai aparecer o conteudo definido no controller e action do default da subrrota. A vantagem disso é que você pode colocar muitas subrrotas sob uma mesma rota:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$minharota=array(
    &#39;type&#39; =&amp;gt; &#39;Zend\Mvc\Router\Http\Literal&#39;,
    &#39;options&#39; =&amp;gt; array(
        &#39;route&#39;    =&amp;gt; &#39;/application&#39;,
        &#39;defaults&#39; =&amp;gt; array(
            &#39;__NAMESPACE__&#39; =&amp;gt; &#39;Application\Controller&#39;,
            &#39;controller&#39;    =&amp;gt; &#39;Index&#39;,
            &#39;action&#39;        =&amp;gt; &#39;index&#39;,
        ),
    ),
    &#39;may_terminate&#39; =&amp;gt; true,
    &#39;child_routes&#39; =&amp;gt; array(
        &#39;minhasubrota1&#39; =&amp;gt; $minhasubrrota1,
        &#39;minhasubrota2&#39; =&amp;gt; $minhasubrrota2,
        &#39;minhasubrota3&#39; =&amp;gt; $minhasubrrota3,
        ...
    ),
);
&lt;/pre&gt;
&lt;br /&gt;
de forma que cada rota vira um conjunto de subrrotas. Nos exemplos aqui em cima fizemos com rotas tipo &#39;Literal&#39;, mas tanto a rota quanto as subrrotas podem ser de qualquer tipo. E adiantando aqui, subrrotas são uma mão na roda na hora de criar submenus, se é que não foram feitas pensando nisso.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
Bom, então, uma vez definidas as rotas , podemos localizar o conteudo de nosso aplicativo. Como a criação de rotas possuem várias possibilidades, crie uns 2 ou 3 controllers e uns 2 ou 3 actions em cada um deles e brinque criando suas rotas. No próximo parte dessa parte faremos uso de links, zf2 navigation e breadcrumbs.&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;lang-php prettyprint prettyprinted&quot; style=&quot;text-align: left;&quot;&gt;
Até lá.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/4744783909820346965/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2013/08/novas-biritas-introducao-ao-zend_18.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/4744783909820346965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/4744783909820346965'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2013/08/novas-biritas-introducao-ao-zend_18.html' title='Novas biritas : Introdução ao Zend Framework 2 - Parte 3 - 1 - Rotas, links e menus'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-5730994066836405910</id><published>2013-03-25T13:35:00.001-07:00</published><updated>2013-08-18T11:55:12.382-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="controller"/><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="programação"/><category scheme="http://www.blogger.com/atom/ns#" term="zend framework 2"/><category scheme="http://www.blogger.com/atom/ns#" term="zf2"/><title type='text'>Novas biritas : Introdução ao Zend Framework 2 - Parte 2 - Criando seus controllers</title><content type='html'>&lt;p&gt;Na &lt;a href=&quot;http://bardozend.blogspot.com.br/2013/03/novas-biritas-introducao-ao-zend.html&quot;&gt;parte 1&lt;/a&gt; dessa série de tutoriais, mostrei como criar as actions e as views no controller padrão do módulo padrão do ZF2. Nesta segunda parte, vou ensinar como criar seus controllers.&lt;/p&gt;
&lt;p&gt;A bem da verdade, é muito fácil.&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;&lt;p&gt;Na pasta &#39;module/Application/src/Application/Controller&#39;, crie seu controller com o nome que desejar. Aqui usaremos &#39;Meucontroller&#39; e criaremos o arquivo &#39;MeucontrollerController.php&#39;.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Copie todo conteudo do arquivo &#39;IndexController.php&#39; da mesma pasta. Apenas apague os actions que tem lá - que você pode ter feito a partir do tutorial anterior - deixando apenas o &#39;indexAction()&#39;.&lt;/p&gt;
&lt;p&gt;Apague o conteudo do &#39;indexAction()&#39; que agora você terá o mínimo que precisa para ter um controller funcional.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Agora crie a pasta das views desse controller &#39;module/Application/view/application/user&#39; e dentro dessa pasta crie o arquivo &#39;index.phtml&#39;, que é a &#39;view&#39; do &#39;indexAction()&#39; do controller &#39;Meucontroller&#39;.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;E para finalizar, vamos rotear o controller para que ele funcione no módulo &#39;Application&#39;&lt;/p&gt;
&lt;p&gt;Para isso, abre o arquivo de configuração do módulo &#39;module/Application/config/module.config.php&#39;&lt;/p&gt;
&lt;p&gt;Dentro desse arquivo, encntre a sessão:&lt;/p&gt;
&lt;pre class=&quot;brush:php&quot; &gt;
    &#39;controllers&#39; =&gt; array(
        &#39;invokables&#39; =&gt; array(
            &#39;Application\Controller\Index&#39; =&gt; &#39;Application\Controller\IndexController&#39;,
        ),
    ),
&lt;/pre&gt;

&lt;p&gt;e apenas acrescente a linha&lt;/p&gt;

&lt;pre class=&quot;brush:php&quot; &gt;
    &#39;controllers&#39; =&gt; array(
        &#39;invokables&#39; =&gt; array(
            &#39;Application\Controller\Index&#39; =&gt; &#39;Application\Controller\IndexController&#39;,
            &#39;Application\Controller\Meucontroller&#39; =&gt; &#39;Application\Controller\MeucontrollerController&#39;
        ),
    ),
&lt;/pre&gt;

&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Acrescente algum conteudo na views &#39;index.phtml&#39; de &#39;Meucontroller&#39; e entre na url:&lt;/p&gt;
&lt;pre&gt;http://localhost/meuprojeto/application/meucontroller/index&lt;/pre&gt;
&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;Se você viu seu conteudo do &#39;index.phtml&#39; no navegador, então você fez tudo corretamente, e poderá fazer o mesmo processo para criar mais controllers, e junto com tutorial anterior, criar mais actions para cada um deles.&lt;/p&gt;
&lt;p&gt;No próximo tutorial vamos tratar de rotas, links e navigation.&lt;/p&gt;
&lt;p&gt;Até lá.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/5730994066836405910/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2013/03/novas-biritas-introducao-ao-zend_25.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/5730994066836405910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/5730994066836405910'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2013/03/novas-biritas-introducao-ao-zend_25.html' title='Novas biritas : Introdução ao Zend Framework 2 - Parte 2 - Criando seus controllers'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-7193656886218821078</id><published>2013-03-25T11:52:00.001-07:00</published><updated>2013-03-25T11:52:08.312-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="action"/><category scheme="http://www.blogger.com/atom/ns#" term="actions"/><category scheme="http://www.blogger.com/atom/ns#" term="composer"/><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="programação"/><category scheme="http://www.blogger.com/atom/ns#" term="views"/><category scheme="http://www.blogger.com/atom/ns#" term="zend framework 2"/><category scheme="http://www.blogger.com/atom/ns#" term="zf2"/><category scheme="http://www.blogger.com/atom/ns#" term="zf2tool"/><title type='text'>Novas biritas : Introdução ao Zend Framework 2 - Parte 1 - Instalação e zf2tool</title><content type='html'>&lt;p&gt;Eis que agora temos a nova versão do Zend Framework - o ZF2.&lt;/p&gt;
&lt;p&gt;Eu confesso que olhando o bicho, minha impressão é que ele é um pouco mais complicado de configurar que o ZF1, então tentei usar outro framework escolhido por motivos profissionais ( não vou falar qual é o concorrente, humft ! ).&lt;/p&gt;
&lt;p&gt;Esse se mostrou tão mais complica do quanto o ZF2, então resolvi voltar ao velho framework.&lt;/p&gt; 

&lt;p&gt;As vantagens de se usar o ZF2 são as mesmas de sempre: padronização, modularização etc. Então, escolhido usar o ZF2, vamos trabalhar.&lt;/p&gt;

&lt;p&gt;Para começar, devemos ter a mão o zf2tool. Para quem não sabe, o zf2tool é uma ferramenta de linha de comando que nos permite criar nosso projeto e seus componentes  automaticamente usando a shell ao invés de criarmos cada coisinha a mão.&lt;/p&gt;

&lt;p&gt;Baixe o zf2tool do endereço &lt;a href=&quot;http://packages.zendframework.com/zftool.phar&quot;&gt;http://packages.zendframework.com/zftool.phar&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Salve esse arquivo &#39;zftool.phar&#39; na sua pasta de executaveis do sistema, ou coloque numa pasta que esteja em seu PATH.&lt;/p&gt;
&lt;p&gt;Agora, vamos trablhar com ele.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Crie seu projeto ( aqui chamamos de &#39;meuprojeto&#39; mesmo ):&lt;/p&gt;

&lt;pre class=&#39;brush:bash&#39; &gt;
$ zf create project meuprojeto
&lt;/pre&gt;

&lt;p&gt;e assim será criado uma pasta de nome &quot;meuprojeto &quot; com o &quot;esqueleto&quot; do zf2.&lt;/p&gt;

&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Se você percebeu, ao terminar o comando acima, foi mandado que você entre na pasta e execute o comando:&lt;/p&gt;

&lt;pre class=&#39;brush:bash&#39; &gt;
$ composer.phar install
&lt;/pre&gt;

&lt;p&gt;Pois bem, faça isso.&lt;/p&gt;

&lt;p&gt;Caso você não tenha o composer instalado, baixe-o daqui &lt;a href=&quot;http://getcomposer.org&quot; &gt;http://getcomposer.org/&lt;/a&gt;.

&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Se tudo deu certo, entre na url de seu projeto no navegador&lt;/p&gt;

&lt;pre&gt;http://localhost/meuprojeto&lt;/pre&gt;

&lt;p&gt;e se você ver a página de boas vindas do ZF2, então está tudo ok até agora.&lt;/p&gt;

&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Aogra, para dar o gostinho de quero mais, vamos criar a coisa mais básica no zf2 : uma &#39;action&#39;.&lt;/p&gt;
&lt;p&gt;Para isso, temos de ter em mente 3 arquivos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;module/Application/src/Application/Controller/IndexController.php&lt;/li&gt;
&lt;li&gt;module/Application/view/application/index/index.phtml&lt;/li&gt;
&lt;li&gt;module/Application/view/application/layout/layout.phtml&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Onde vemos aqui que o primeiro é o controller padrão da aplicação, na segunda linha temos a &#39;view&#39; para o &#39;indexAction&#39; e a terceira linha é o arquivo de layout do site.&lt;/p&gt;
&lt;p&gt;Você pode brincar a vontade com esses arquivos para ver como é a coisa.&lt;/p&gt;

&lt;/li&gt;

&lt;li&gt;&lt;p&gt;No controller &#39;IndexController.php&#39;, crie uma action com o nome que quiser ( aqui usaremos &#39;minhaaction&#39; ):&lt;/p&gt;

&lt;pre class=&quot;brush:php&quot; &gt;
function minhaactionAction(){
    print &quot;Alô mamãe !&quot;;
}
&lt;/pre&gt;

&lt;/li&gt;

&lt;li&gt;Agora, crie uma &#39;view&#39; para &#39;minhaaction&#39; na pasta &#39;module/Application/view/application/index&#39; de nome &#39;minhaaction.phtml&#39;, e escreva algo dentro.&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Agora, no seu navegador, digite a url&lt;/p&gt;

&lt;pre&gt;http://localhost/meuprojeto/application/index/minhaaction&lt;/pre&gt;

&lt;p&gt;e se aparecer escrito &quot;Alô, mamãe !&quot;, você acabou de criar sua action.&lt;/p&gt;

&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;E pronto, agora você está apto a criar um site beeeem simples com o zf2, já que o processo de criação de mais &#39;actions&#39; e mais &#39;views&#39; segue o mesmo esquema.&lt;/p&gt;
&lt;p&gt;Na parte 2 eu vou ensinar como criar seus controllers. Até lá.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/7193656886218821078/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2013/03/novas-biritas-introducao-ao-zend.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7193656886218821078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7193656886218821078'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2013/03/novas-biritas-introducao-ao-zend.html' title='Novas biritas : Introdução ao Zend Framework 2 - Parte 1 - Instalação e zf2tool'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-3341304493611254960</id><published>2012-11-06T07:30:00.001-08:00</published><updated>2012-11-06T09:10:58.732-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="banco de dados"/><category scheme="http://www.blogger.com/atom/ns#" term="multiplos banco de dados"/><category scheme="http://www.blogger.com/atom/ns#" term="resources"/><category scheme="http://www.blogger.com/atom/ns#" term="tabelas"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend_Application_Resource_Cachemanager"/><title type='text'>Tô vendo tudo em dobro : Como utilizar dois ou mais banco de dados ao mesmo tempo com Zend</title><content type='html'>&lt;p&gt;Muita gente tenta criar uma aplicação e se depara com o fato de ter de utilizar mais que um banco de dados ao mesmo tempo.&lt;/p&gt;
&lt;p&gt;Uma situação típica : existe um aplicativo ( que não foi você quem fez ) que têm um banco de dados próprio e você não pode alterar os dados dele, somente ler.&lt;/p&gt;
&lt;p&gt;Mas ao mesmo tempo você precisa usar esses dados para seu ERP feito em Zend, e não pode alterar o banco de dados do outro aplicativo, pois você precisa de um gerenciamento de usuários do seu ERP por exemplo.&lt;/p&gt;
&lt;p&gt;Neste caso, você precisará criar um banco de dados próprio para seu ERP, e trabalhar junto com o banco de dados do outro aplicativo.&lt;/p&gt;
&lt;p&gt;Então, vem a pergunta natural : como faço isso no Zend ? A resposta é surpreendentemente simples.&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;Para este post, considere dois banco de dados : &lt;b&gt;&#39;db1&#39;&lt;/b&gt; e &lt;b&gt;&#39;db2&#39;&lt;/b&gt;. O banco de dados &lt;b&gt;&#39;db1&#39;&lt;/b&gt; é do tipo &lt;b&gt;&#39;dbtype1&#39;&lt;/b&gt; ( onde &lt;b&gt;&#39;dbtype1&#39;&lt;/b&gt; pode ser o &lt;i&gt;mysql&lt;/i&gt;, &lt;i&gt;postgres&lt;/i&gt;, &lt;i&gt;mssql&lt;/i&gt;, etc ) e o &lt;b&gt;&#39;db2&#39;&lt;/b&gt; seria do tipo &lt;b&gt;&#39;dbtype2&#39;&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;No arquivo &lt;b&gt;&#39;application/configs/application.ini&#39;&lt;/b&gt; de seu projeto, configure esses banco de dados assim:&lt;/p&gt;
&lt;br/&gt;
&lt;pre&gt;
;; application/configs/application.ini

;; Configura o adaptador para &#39;db1&#39; e o define como o adaptador padrão da aplicação.
resources.resourcealias.dbalias1.adapter  = pdo_dbtype1
resources.resourcealias.dbalias1.host     = host1
resources.resourcealias.dbalias1.username = userdb1
resources.resourcealias.dbalias1.password = passdb1
resources.resourcealias.dbalias1.dbname   = db1
resources.resourcealias.dbalias1.default  = true

;; Configura o adaptador para &#39;db2&#39;.
resources.resourcealias.dbalias2.adapter  = pdo_dbtype2
resources.resourcealias.dbalias2.host     = host2
resources.resourcealias.dbalias2.username = userdb2
resources.resourcealias.dbalias2.password = passdb2
resources.resourcealias.dbalias2.dbname   = db2
resources.resourcealias.dbalias2.default  = false
&lt;/pre&gt;
&lt;br/&gt;
&lt;p&gt;Aqui devemos notar que &lt;b&gt;&#39;resourcealias&#39;&lt;/b&gt; é um apelido para esse recurso, &lt;b&gt;&#39;dbalias1&#39;&lt;/b&gt; e &lt;b&gt;&#39;dbalias2&#39;&lt;/b&gt; são apelidos para as conexões,
&lt;b&gt;&#39;pdo_dbtype1&#39;&lt;/b&gt; e &lt;b&gt;&#39;pdo_dbtype1&#39;&lt;/b&gt; são os tipo de banco de dados, como &lt;b&gt;&#39;pdo_mysql&#39;&lt;/b&gt; para &lt;i&gt;MySQL&lt;/i&gt;, &lt;b&gt;&#39;pdo_pgsql&#39;&lt;/b&gt; para &lt;i&gt;PostgreSQL&lt;/i&gt;, etc. O resto é auto-explicativo, espero ...&lt;/p&gt;

&lt;br/&gt;
&lt;p&gt;Pois bem, definido a configuração dos bancos de dados, agora abramos o &lt;b&gt;&#39;Bootstrap.php&#39;&lt;/b&gt; e fazemos um &#39;inicializador&#39;:&lt;/p&gt;

&lt;pre class=&#39;brush:php&#39;&gt;
public function _initDbRegistry(){

    $this-&gt;bootstrap(&#39;resourcealias&#39;);
    $obj = $this-&gt;getPluginResource(&#39;resourcealias&#39;);
    Zend_Registry::set(&#39;adapteralias1&#39;, $obj-&gt;getDb(&#39;dbalias1&#39;));
    Zend_Registry::set(&#39;adapteralias2&#39;, $obj-&gt;getDb(&#39;dbalias2&#39;));

}
&lt;/pre&gt;
&lt;br/&gt;

&lt;p&gt;E agora simplesmente, crie seu model e adicione:&lt;/p&gt;
&lt;pre class=&quot;brush:php&quot; &gt;
class Meumodel1_Model extends Zend_Db_Table_Abstract {

    protected $_name    = &#39;uma_tabela_qualquer_do_db1&#39;;
    protected $_adapter = &#39;adapteralias1&#39;;

}

class Meumodel2 extends Zend_Db_Table_Abstract {

    protected $_name    = &#39;uma_tabela_qualquer_do_db2&#39;;
    protected $_adapter = &#39;adapteralias2&#39;;

}
&lt;/pre&gt;

&lt;br/&gt;

&lt;p&gt;E está pronto tudo o que você precisa para utilizar dois bancos de dados totalmente diferentes juntos. Definida a classe, você poderá criar os métodos e objetos de seus modelos como sempre utilizou com Zend, inclusive usando relacionamento de tabelas ( fiz um post sobre isso &lt;a href=&quot;http://bardozend.blogspot.com.br/2011/11/voce-e-meu-amigo-nao-e-relacionamento.html&quot; &gt;aqui&lt;/a&gt; ) sem problemas.&lt;/p&gt;

&lt;p&gt;Eeeee até a próxima.&lt;/p&gt;
&lt;br/&gt;
&lt;hr/&gt;
&lt;br/&gt;
&lt;h3&gt;Referências&lt;/h3&gt;
&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Amazium : &lt;a href=&quot;http://www.amazium.com/blog/using-different-databases-with-zend-framework&quot; &gt;Using Different Databases with Zend Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zend Manual : &lt;a href=&quot;http://framework.zend.com/manual/1.12/en/zend.db.adapter.html&quot; &gt;Zend Adapter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zend Manual : &lt;a href=&quot;http://framework.zend.com/manual/1.12/en/zend.application.available-resources.html&quot; &gt;Available Resource Plugins&lt;/a&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;hr/&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/3341304493611254960/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2012/11/to-vendo-tudo-em-dobro-como-utilizar.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/3341304493611254960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/3341304493611254960'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2012/11/to-vendo-tudo-em-dobro-como-utilizar.html' title='Tô vendo tudo em dobro : Como utilizar dois ou mais banco de dados ao mesmo tempo com Zend'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-5403103174757756430</id><published>2012-02-19T17:32:00.000-08:00</published><updated>2012-02-19T17:37:09.861-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="allowwhitespace"/><category scheme="http://www.blogger.com/atom/ns#" term="espaços em brancos"/><category scheme="http://www.blogger.com/atom/ns#" term="forms"/><category scheme="http://www.blogger.com/atom/ns#" term="validators"/><title type='text'>Bota uma branquinha ai :: Habilitando caracteres brancos no campo do formulário</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
sso é um probleminha que existe quando queremos habilitar um campo que pode ter um espaço em branco no formulário, como por exemplo, na hora de inscrever um usuário e é pro bendito colocar o nome inteiro dele. Nessa hora, o espaço entre os nomes têm um espaço em branco.&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Pra ir bem rápido: você têm no seu form da aplicação Zend um validator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;...

&#39;validator&#39; =&amp;gt; array(&#39;Alpha&#39;)

...
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Pois bem, para habilitar caracteres brancos no form, basta acrescentar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;...

&#39;validator&#39; =&amp;gt; array(&#39;Alpha&#39;, array(&#39;allowWhiteSpace&#39; =&amp;gt; true))

...
&lt;/pre&gt;
&lt;br /&gt;
E pronto. Simples assim só mamão com açucar.&lt;br /&gt;
&lt;br /&gt;
Até a próxima.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Referências:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;- Standart Filter Class : &lt;span id=&quot;goog_915657647&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/goog_915657646&quot;&gt;http://framework.zend.com/manual/en/zend.filter.set.html&lt;/a&gt;&lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/&quot;&gt;&lt;span id=&quot;goog_915657648&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/5403103174757756430/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2012/02/bota-uma-brnaquinha-ai-habilitando.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/5403103174757756430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/5403103174757756430'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2012/02/bota-uma-brnaquinha-ai-habilitando.html' title='Bota uma branquinha ai :: Habilitando caracteres brancos no campo do formulário'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-7605215127276360496</id><published>2012-02-12T05:51:00.000-08:00</published><updated>2012-02-12T05:51:27.605-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="login"/><category scheme="http://www.blogger.com/atom/ns#" term="zend auth"/><title type='text'>Essa é minha casa ? :: Sistema simples de login com Zend</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Esse deve ser o que deixa boa parte dos programadores de Zend com água na boca.&lt;br /&gt;
Um sistema de login, é uma das maiores nescessidade quando se colocar seu apĺicativo online e não quer ver fulano mechendo na sua área administrativa que tanto tempo levou pra fazer. Ou quando cria um sistema em que seus usuários fazem coisas escondidas que só eles podem saber ... hehehe&lt;br /&gt;
De qualquer forma, um sistema de login é o que vão ter agora.&lt;br /&gt;
Primeiro, temo de criar a tabela de usuarios no banco de dados:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;CREATE TABLE IF NOT EXISTS &#39;usuarios&#39; (&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &#39;id&#39; int(11) NOT NULL AUTO_INCREMENT,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &#39;login&#39; varchar(255) NOT NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &#39;senha&#39; varchar(255) NOT NULL&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; PRIMARY KEY (&#39;id&#39;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Simples de entender né ?&lt;br /&gt;
&lt;br /&gt;
A partir disso, entre no seu terminal, vá para a pasta de seu aplicativo em Zend, e criemos o formulario de login para colocar na página inicial ( controller index e action index ):&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;$ zf create form login&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: inherit;&quot;&gt;
Abra o arquivo &#39;application/forms/Login.php&#39; gerado, e coloque as linhas&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Application_Form_Login extends Zend_Form {

    public function init(){

        // Define a página do action, no caso, o proprio action index de login.
        setAction(&#39;index&#39;);
 
        // Método de envio do form.
        $this-&amp;gt;setMethod(&#39;post&#39;);
         
        // Nome de usuário.
        $this-&amp;gt;addElement(&#39;text&#39;, &#39;login&#39;, array( &#39;label&#39;    =&amp;gt; &#39;Login&#39;, 
                             &#39;required&#39; =&amp;gt; &#39;true&#39;,            
               &#39;validator&#39; =&amp;gt; array(&#39;noempty&#39;)  
                                                )
                         );
 
        // Senha de usuário.
        $this-&amp;gt;addElement(&#39;password&#39;, &#39;senha&#39;, array( &#39;label&#39;    =&amp;gt; &#39;Senha&#39;,
                   &#39;required&#39; =&amp;gt; &#39;true&#39;,
                   &#39;validator&#39; =&amp;gt; array(&#39;noempty&#39;)
                                                    )
                         );
        
        // Botão de submissão.
        $this-&amp;gt;addElement(&#39;submit&#39;, &#39;submit&#39;, array(&#39;label&#39; =&amp;gt; &#39;Entrar&#39;) );
     
    }

}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
E agora, no seu controller &#39;controllers/IndexController.php&#39; escreva as linhas no action &#39;indexAction&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;public function indexAction(){
     
       // Cria o objeto de formulário.
     $loginForm = new Application_Form_Login();

     // É verificado se existem dados enviados via post ( caso de tentativa de login ).

     // Verifica se existem dados enviados via POST.
     if( $this-&amp;gt;getRequest()-&amp;gt;isPost()  ) {
        
                // Salva os dados enviados via post no array &#39;$data&#39;.
      $data = $this-&amp;gt;getRequest()-&amp;gt;getPost() ;
 
         // Verifica se os dados são válidos.
         if( $loginForm-&amp;gt;isValid($data)  ) {

          // Pega o nome de usuário e a senha enviados pelo POST.
          $login = $loginForm-&amp;gt;getValue(&#39;login&#39;);
                  $pass  = $loginForm-&amp;gt;getValue(&#39;senha&#39;);
                  
             ///////////////////////////////////////////////////////////
             // Pega as informações do adaptador do banco de dados.
             $dbAdapter = Zend_Db_Table::getDefaultAdapter();
                          
             // Inicia o adaptador Zend_Auth para banco de dados.
                // É definido a tabela do db e os campos que serão usados
                // para comparar com os campos de login. 
             $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
             $authAdapter-&amp;gt;setTableName(&#39;usuarios&#39;)
                     -&amp;gt;setIdentityColumn(&#39;login&#39;)
                    -&amp;gt;setCredentialColumn(&#39;senha&#39;)
                     -&amp;gt;setCredentialTreatment(&#39;MD5(?)&#39;);
                // Aqui, a senha é transformada num hash md5 e só então
                // comparado com a senha registrada no db ( que está em md5 também ).
                // Se você usa SHA1 ou outra codificação, é aqui que vocÊ deve declarar.
                //////////////////////////////////////////////////////////
                 
                ///////////////////////////////////////////////////////////
                // Agora, é comparado os dados digitados com os registrados.
             $authAdapter-&amp;gt;setIdentity($login)-&amp;gt;setCredential($pass);

                // Pega a instância atual do Zend_Auth.
                $auth = Zend_Auth::getInstance();
                
                // Pega o resultado da comparação dos dados enviados com os registrados.
                $result = $auth-&amp;gt;authenticate($authAdapter);
                
                // Caso o resultado seja positivo, o login é efetuado.
                if( $result-&amp;gt;isValid() ) {                
                                 
                 // Pega o nome do usuário.
                 $user = $authAdapter-&amp;gt;getResultRowObject();
                 
                 // Salva o nome do usuário para uso na sessão.
                 $auth-&amp;gt;getStorage()-&amp;gt;write($user);
                 
                 // Redireciona para a primeira página após o login.
                 $this-&amp;gt;_redirect(&quot;index/primeirapagina&quot; );
              
                }
                // Caso não seja positivo ...
                else{
                 
                 // Caso o usuário não esteja registrado, é mostrado uma mensagem mostrando o fato.
                   $this-&amp;gt;view-&amp;gt;messages = &quot;Não foi possível realizar o login.&quot;;
                   
                   // Reimprime o formulário com os dados já digitados.
                   $this-&amp;gt;view-&amp;gt;loginForm = $loginForm-&amp;gt;populate($data);

                }
                ///////////////////////////////////////////////////////////
                                           
           }
           // Caso os dados não foram digitados corretamente, é reimprimido o formulário com os dados para correção.
           else $this-&amp;gt;view-&amp;gt;loginForm = $loginForm-&amp;gt;populate($data);
              
     }
     // Imprime por default o formulário na entrada do site.
     else $this-&amp;gt;view-&amp;gt;loginForm = $loginForm;
     
}
&lt;/pre&gt;
&lt;br /&gt;
E a partir desse ponto, você já têm um sistema de login funcional, brinque um pouco com ele para er se está tudo certo, porque agora vamos para a real utilidade de um sistema de login.&lt;br /&gt;
&lt;br /&gt;
Pois bem, se você perceber, ainda pode navegar pelas páginas de sua aplicação Zend sem precisar realizar o login ( digite na url qualquer endereço dela para ver que entra numa boa ainda ).&lt;br /&gt;
E a não ser que você tenha um motivo especial para fazer um sistema de login que deixe tudo aberto, o que queremos é impedir o acesso a pessoas não logadas, não ?&lt;br /&gt;
Pois bem, a &quot;tranca da porta&quot; de nossa aplicação são essas duas linhas:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;// Pega a instância atual do Zend_Auth.
$auth = Zend_Auth::getInstance();
        
// Verifica se o usuário está logado.
if( $auth-&amp;gt;hasIdentity() ) { &amp;lt;faz alguma coisa&amp;gt; }
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Nessas duas linhas, você verifica se o usuário está logado, se não está, geralmente você o envia para a página inicial, assim&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;// Pega a instância atual do Zend_Auth.
$auth = Zend_Auth::getInstance();
        
// Verifica se o usuário está logado.
if( $auth-&amp;gt;hasIdentity() ) { &amp;lt;faz alguma coisa&amp;gt; }
else $this-&amp;gt;_redirect(&#39;index/paginainicial&#39;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Essas linhas você pode colocar no action &#39;init()&#39; de seus controllers que quer restringir acesso - ou em algum action em particular, ou mesmo nas próprias views -&amp;nbsp; e já terá garantido a um pouco de segurança a sua aplicação.&lt;br /&gt;
&lt;br /&gt;
É isso ai. Não, não acabou. Ainda falta uma coisinha.&lt;br /&gt;
&lt;br /&gt;
Quando você se loga, sua identificação no aplicativo fica salvo na instância do Zend_Auth, e voltar para a página inicial simplesmente não resolve isso, o que pode ser perigoso, pois o usuario se loga, navega, sai, mas seu login continua lá para um outro safado sem vergonha usar brincar de graça na sua aplicação.&lt;br /&gt;
&lt;br /&gt;
Para impedir isso é bem simples também. Criemos uma action no &#39;IndexController.php&#39; com o nome de &#39;logoutAction&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;$ zf create action logout&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;e acrescente as seguintes linhas&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;public function logoutAction(){
     
      // Apaga da instância do Zend Auth a identificação no sistema.
      Zend_Auth::getInstance()-&amp;gt;clearIdentity();
    
      // Redireciona para a página inicial do site.
      $this-&amp;gt;_helper-&amp;gt;redirector(&#39;index&#39;);
        
}
&lt;/pre&gt;
&lt;br /&gt;
E assim, no seu layout, crie um link escrito &#39;logout&#39; que aponte para esse action&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:php&quot;&gt;&amp;lt;?php
$logoutUrl = $this-&amp;gt;view-&amp;gt;url(array(&#39;controller&#39;=&amp;gt;&#39;index&#39;, &#39;action&#39;=&amp;gt;&#39;logout&#39;), null, true);
            
// Imprime a mensagem de boas vindas com o nome do usuário e o link para logout.
print &quot;&amp;lt;a href=&quot;.$logoutUrl.&quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&quot;;
?&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Assim, para sair, basta clicar no link &#39;logout&#39;, e a saida do usuário ficará limpa.&lt;br /&gt;
&lt;br /&gt;
Agora é só se divertir montando seus aplicativos, que atgora terão a devida segurança e privacidade que nescessitam. Até a próxima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Referências:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- Zend Auth : http://framework.zend.com/manual/en/zend.auth.introduction.html&lt;br /&gt;
&lt;br /&gt;
- Autenticação com Zend Framework : http://fernandomantoan.com/frameworks/zend-framework/autenticacao-com-zend-framework/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/7605215127276360496/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2012/02/essa-e-minha-casa-sistema-simples-de.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7605215127276360496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7605215127276360496'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2012/02/essa-e-minha-casa-sistema-simples-de.html' title='Essa é minha casa ? :: Sistema simples de login com Zend'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-8012412051408991577</id><published>2012-02-07T17:15:00.000-08:00</published><updated>2012-02-07T17:23:06.591-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="baseurl"/><category scheme="http://www.blogger.com/atom/ns#" term="bootstrap"/><title type='text'>Vai no chute mesmo :: Como usar o baseUrl no Bootstrap</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Bom, quem já programa em Zend a um tempinho, já sabe que para usar coisas como css , javascript , etc se faz , no modo Zend de ser, no Bootstrap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problema que, para fazer isso, ou você usar o caminho até esses arquivos de modo explícito ( colocando o caminho inteiro na mão ), ou vai se embolar com outros modos de tentar chamar o método &#39;baseUrl()&#39; do Views&amp;nbsp; Helper.&lt;br /&gt;
&lt;br /&gt;
Mas, para sua sorte, encontrei um jeito de fazer isso de forma rápida e limpa - ainda que exótica - de ter a baseUrl em uma linha só.&lt;br /&gt;
&lt;br /&gt;
No seu &#39;Bootstrap.php&#39;, você pode colocar em qualquer método a linha&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;nbsp;$baseUrl = substr($_SERVER[&#39;PHP_SELF&#39;], 0, strpos($_SERVER[&#39;PHP_SELF&#39;], &#39;index.php&#39;));&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
E pronto ! Você terá sua baseUrl para usar onde quiser e na forma que desejar.

Até a próxima.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/8012412051408991577/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2012/02/vai-no-chute-mesmo-como-usar-o-baseurl.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/8012412051408991577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/8012412051408991577'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2012/02/vai-no-chute-mesmo-como-usar-o-baseurl.html' title='Vai no chute mesmo :: Como usar o baseUrl no Bootstrap'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-5686781963203847848</id><published>2011-12-14T04:03:00.000-08:00</published><updated>2011-12-14T04:03:54.671-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Essa é minha casa ? :: Instalando Zend Framework no Windows com WAMP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Bom, muita gente usa Windows para produção - sim, sou linuxer, mas não fanático também - então vou dar um &quot;hint&quot; de como criar um ambiente de produção rápida para o Zend Framework .&lt;br /&gt;
&lt;br /&gt;
E como está no título, vamos fazer isso num Windows com &lt;a href=&quot;http://www.wampserver.com/en/&quot; target=&quot;_blank&quot;&gt;wamp&lt;/a&gt; server ( Servidor de Apache, Mysql e Php ) instalado e rodando. Bom, eu não fiz um tutorial ainda de como instalar um wamp, mas é facilmente encontrado no Google um monte de tutoriais, e só pra dizer que deixei na mão, podem seguir esse vídeo &lt;a href=&quot;http://www.oficinadanet.com.br/artigo/servidores/video_aula_instalando_e_configurando_o_wamp_server&quot; target=&quot;_blank&quot;&gt;tutorial aqui&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Instalado e configurado seu wamp, vamos aos passos:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1)&lt;/b&gt; Baixe o Zend Framework &lt;a href=&quot;http://www.zend.com/community/downloads&quot; target=&quot;_blank&quot;&gt;aqui&lt;/a&gt;. Tem o full e o mínimal, baixe o que você precisar.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2)&lt;/b&gt; Descompacte o pacote do Zend na pasta &#39;C:\wamp\apps&#39;. Eu acho mais prático renomear a pasta para simplesmente &#39;zendframework&#39;, assim nas atualizações não precisa mudar as configurações que iremos fazer depois, mas se você lembrar de mudar as configurações depois, pode deixar como está.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3)&lt;/b&gt; Abra o arquivo &#39;C:\wamp\bin\apache\Apachex.x-x\bin\php.ini&#39; e ache a entrada escrito &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;; Windows: &quot;\path1;\path2&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;e acrescente embaixo a linha assim&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;; Windows: &quot;\path1;\path2&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;include_path = &quot;.;c:\wamp\apps\zendframework\library&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;No arquivo &#39;C:\wamp\bin\php\phpx.x.x\php.ini&#39; faça a mesma coisa. Com isso, o zend library vai estar incluso no PATH do phpe você vai poder usar a biblioteca dele em quyalquer aplicação que você criar em sua máquina. EM SUA MAQUINA , não em outra. Se você fizer uma aplicação na sua máquina e mudar para outro lugar ( um servidor de hospedagem por exemplo )&lt;/span&gt;, isso não vai funcionar, a não ser que o outro lugar tenha lido meu artigo :D&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4)&lt;/b&gt; Agora, configuremos o Zend Tools. Para isso, clique no ícone &#39;Computador&#39;. Como estou no Windows 7, vai abrir a janela &#39;Painel de Controle\Sistema e Segurança\Sistema&#39;. Clique no link &#39;Alterar configurações&#39;, e irá abrir a janela &#39;Propriedades do sistema&#39;.&lt;br /&gt;
Clique na aba &#39;Avançado&#39; e então no botão &#39;Variáveis de ambiente&#39;. Na janela que abrir, clique na linha com &#39;PATH&#39;e depois no botão &#39;Editar&#39;.&lt;br /&gt;
Na janela que abrir, coloque no fim do campo o trecho&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;;C:\wamp\apps\zendframework\bin&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Não esquece do ponto e vírgula, que serve para separar caminhos do PATH do Windows, sem isso os dois últimos PATHs não funcionarão.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5)&lt;/b&gt; Após isso, abra o &#39;Power Shell&#39; ou o velho &#39;cmd&#39;, digite&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;C:\&amp;gt; zf show version&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Se aparecer&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;C:\&amp;gt; zf show version&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Zend Framework Version: x.x.x&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Então está tudo funcionando e você poderá usar tudo do Zend em seu Windows normalmente.&lt;br /&gt;
&lt;br /&gt;
Até a próxima rodada.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/5686781963203847848/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/12/essa-e-minha-casa-instalando-zend.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/5686781963203847848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/5686781963203847848'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/12/essa-e-minha-casa-instalando-zend.html' title='Essa é minha casa ? :: Instalando Zend Framework no Windows com WAMP'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-1567239144354604482</id><published>2011-11-27T11:58:00.000-08:00</published><updated>2011-11-27T11:58:30.520-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="diretorio"/><category scheme="http://www.blogger.com/atom/ns#" term="magento"/><category scheme="http://www.blogger.com/atom/ns#" term="mudança"/><category scheme="http://www.blogger.com/atom/ns#" term="pasta"/><title type='text'>Aperitivo grátis :: Mudando a pasta raiz de sua instalação do Magento</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;O Magento é um e-commerce feito em Zend, e como esse site fala de Zend, creio não haver problemas em falar do Magento - tirando o fato que eu uso Magento também =)&lt;br /&gt;
&lt;br /&gt;
Então, como primeira dica sobre Magento, vou explicar como resolver o problema de mudar a pasta de instalação de seu Magento DEPOIS que você instalou-o.&lt;br /&gt;
&lt;br /&gt;
Sim, porque , muitas vezes, queremos fazer umas mudanças em nosso site - seja porque queremos colocar um site apenas como seção de outro site, ou apenas está colocando ordem no host no meio de centenas de pastas ... - e resolvemos isso da seguinte maneira:&lt;br /&gt;
&lt;br /&gt;
Na hora de instalação, o magento cria no banco de dados, uma tabela de nome &quot;*core_config_data&quot;.&lt;br /&gt;
Nessa tabela, existem dois campos de nomes &quot;web/unsecure/base_url&quot; e &quot;web/secure/base_url&quot;.&lt;br /&gt;
Se você olhar nesses campos, vai perceber que os valores deles são exatamente o diretório raiz da instalação de seu magento. &lt;br /&gt;
Nem precisaria dizer o que fazer, mas como sei que têm programador que vai pro trabalho de porre, ou que gosta de ficar codando de madrugada com aquele sono, vou dizer que mude o valor desses campos para o endereço da nova pasta raíz de sua instalação.&lt;br /&gt;
Após mudar no banco de dados, apague todo o conteúdo da pasta &quot;var/cache&quot; e rode o magento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uma outra maneira de fazer isso é meio sacana.&lt;br /&gt;
Você vai até a pasta&amp;nbsp;&quot;app/etc&quot; e muda o nome do arquivo &quot;local.xml&quot; para &quot;local.xml.bkp&quot; ( ou apague de vez o arquivo, o local.xml.bkp&quot; é só por precaução ).&lt;br /&gt;
Agora, rode o seu magento. Ele vai entrar na tela de instalação. Siga a instalação normalmente ( mas mantendo o mesmo banco de dados e o mesmo prefixo das tabelas do magento ).&lt;br /&gt;
Ao final, os dados sobre o endereço da pasta nova vão estar atualizados.&lt;br /&gt;
&lt;br /&gt;
Se deu tudo certo, volte ao serviço. Até a próxima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;h2&gt;Referências:&lt;/h2&gt;&lt;h2 class=&quot;maintitle&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;CEREBRUM: &lt;a href=&quot;http://www.cerebrum.com.br/forum/index.php?/topic/451-mudando-manualmente-o-base-url-do-magento/&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;main_topic_title&quot;&gt;Mudando manualmente o base URL do Magento&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2&gt;  &lt;hr /&gt;&lt;/h2&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/1567239144354604482/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/11/aperitivo-gratis-mudando-pasta-raiz-de.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/1567239144354604482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/1567239144354604482'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/11/aperitivo-gratis-mudando-pasta-raiz-de.html' title='Aperitivo grátis :: Mudando a pasta raiz de sua instalação do Magento'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-3822563938240199183</id><published>2011-11-19T11:26:00.001-08:00</published><updated>2011-11-19T13:05:56.681-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="models"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="relacionamento"/><category scheme="http://www.blogger.com/atom/ns#" term="tabelas"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Você é meu amigo, não é ? :: Relacionamento de tabelas simples com Zend Models</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Mais uma pra tentar facilitar a vida dos zendeiros.&lt;br /&gt;
&lt;br /&gt;
Imaginemos a situação onde temos que cadastrar um carro num db.&lt;br /&gt;
Vamos registrar o modelo e a cor.&lt;br /&gt;
MAS, em vez de usar um campo de cores direto na tabela dos carros, criamos uma tabela de cores separado ( o que ajudaria muito a criar um &#39;form select&#39; com as opções de cores, por exemplo ) e depois vamos associar a cada carro da tabela de carros, uma cor da tabela de cores.&lt;br /&gt;
&lt;br /&gt;
Sentiram a situação ?&lt;br /&gt;
&lt;br /&gt;
Pois bem, para esse problema, temos as tabelas e os campos&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;u&gt;&lt;b&gt;carros&lt;/b&gt;&lt;/u&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;&lt;b&gt;cores&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; modelo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cor&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_cor&lt;/div&gt;
&lt;br /&gt;
A idéia é intuitiva: a cada &#39;id&#39; de &lt;b&gt;&#39;carro&lt;/b&gt;s&#39;, associamos um &#39;id_cor&#39; que corresponde ao &#39;id&#39; da tabela &#39;&lt;b&gt;cores&lt;/b&gt;&#39;, e dai queremos pegar o nome da cor correspondente ao &#39;id&#39; em &#39;&lt;b&gt;cores&lt;/b&gt;&#39;.&lt;br /&gt;
&lt;br /&gt;
Pra fazer isso no Zend é bem simples ( agora que aprendi é simples, claro ¬¬ ).&lt;br /&gt;
&lt;br /&gt;
Criemos dois models: um pra tabela &lt;b&gt;&#39;carros&#39;&lt;/b&gt;, e outro pra tabela &lt;b&gt;&#39;cores&#39;&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;$ zf create model carros&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;$ zf create model cores&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Pois bem, no model &#39;Carros.php&#39;, temos a classe &#39;Application_Model_Carros&#39;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php

class Application_Model_Carros extends Zend_Db_Table_Abstract {

 protected $_name = &#39;carros&#39;;
 protected $_primary = &#39;id&#39;;
 
}&lt;/pre&gt;
&lt;br /&gt;
e no model &#39;Cores.php&#39;, temos a classe &#39;Application_Model_Cores&#39;&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php

class Application_Model_Cores extends Zend_Db_Table_Abstract {

 protected $_name = &#39;cores&#39;;
 protected $_primary = &#39;id&#39;;
 
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
onde percebe-se que já definimos as tabelas de cada model e os devidos primary keys.&lt;br /&gt;
Agora, pra relacionar o campo &#39;ide_cores&#39; da tabela carros ao campo &#39;id&#39; da tabela &#39;cores&#39;, declaramos no model &#39;Application_Model_Carros&#39; a sua dependencia com a tabela &#39;cores&#39; assim:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php

class Application_Model_Carros extends Zend_Db_Table_Abstract {

 protected $_name = &#39;carros&#39;;
 protected $_primary = &#39;id&#39;;

        // Declara a dependencia da tabela &#39;carros&#39; com a tabela &#39;cores&#39; 
        // através do model &#39;Application_Model_Cores&#39;.
 protected $_dependentTables = array(&#39;Application_Model_Cores&#39;);
 
}&lt;/pre&gt;
&lt;br /&gt;
E acabamos com a parte do model para os carros.&lt;br /&gt;
No model &#39;Application_Model_Cores&#39;, devemos criar os relacionamentos entre os campos. Para isso, fazemos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php

class Application_Model_Cores extends Zend_Db_Table_Abstract {

 protected $_name = &#39;cores&#39;;
 protected $_primary = &#39;id&#39;;

  protected $_referenceMap = array( 
   &#39;refCores&#39; =&amp;gt; array( 
    &#39;refTableClass&#39; =&amp;gt; &#39;Application_Model_Carros&#39;,
    &#39;refColumns&#39;    =&amp;gt; array(&#39;id_cor&#39;),
    &#39;columns&#39;       =&amp;gt; array(&#39;id&#39;)
  )
 ); 
}&lt;/pre&gt;
&lt;br /&gt;
onde a variável especial &#39;$_referenceMap&#39; cria o mapa de associação desejado entre as tabelas.&lt;br /&gt;
Nos arrays, temos que&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;&#39;refCores&#39;&lt;/b&gt; é apenas um label para esse mapeamento, pode ter qualquer nome que você queira&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&#39;refTableClass&#39;&lt;/b&gt; é classe da tabela &lt;i&gt;pai &lt;/i&gt;que depende da tabela &#39;cores&#39; ( que é a &lt;i&gt;filha&lt;/i&gt; )&amp;nbsp; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;&#39;refColumns&#39;&lt;/b&gt; é o campo da tabela &lt;i&gt;pai &lt;/i&gt;que está relacionado com um campo da tabela &lt;i&gt;filha&lt;/i&gt; ( no caso, o campo &#39;id_cor&#39; da tabela &lt;i&gt;pai&lt;/i&gt; se relaciona com o campo &#39;id&#39; da tabela &lt;i&gt;filha&lt;/i&gt; )&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&#39;columns&#39;&lt;/b&gt; é o campo da tabela filha que é requerido pela relação com o campo &#39;refColumns&#39; da tabela &#39;pai&#39;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
E isso finaliza o nosso tratamento com os models.&lt;br /&gt;
Agora, no controller onde você vai trabalhar ( usaremos aqui&amp;nbsp; como exemplo &#39;Dados.php&#39; ), digite no seu action&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php
class DadosController extends Zend_Controller_Action {

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

    public function indexAction(){
 
 // Criamos o objeto do model da tabela &#39;carros&#39;. 
 $carrosModel = new Application_Model_Carros();

        // Pegamos o carro de &#39;id&#39; igual a 3.
 $carros = $carroModel-&amp;gt;fetchRow(&#39;id=3&#39;);

        // Aqui pegamos os campos das cores relativos ao carro de &#39;id&#39;
        // igual a 3.
 $cores = $carros-&amp;gt;findDependentRowSet(&quot;Application_Model_Cores&quot;);
 
        // Imprime o modelo e a cor do carro de &#39;id&#39; igual a 3.
 print &quot;Modelo :: &quot;.$carros[&#39;modelo&#39;];
        print &quot;Cor :: &quot;.$cores[0][&#39;cor&#39;];

    }

}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O que ocorre é simples: fazemos um &#39;fetchRow&#39; para pegar os campos do carro de &#39;id&#39; igual a 3 e salvamos no array &#39;$carros&#39;.&lt;br /&gt;
Com o método &#39;findDependentRowSet&#39; pegamos os campos da tabela &#39;cores&#39; correspondente ao &#39;id_cor&#39; do carro, conforme as relações entre tabelas que configuramos e salvamos no array &#39;$cores&#39;.&lt;br /&gt;
O resto já conhecemos.&lt;br /&gt;
Então, podem ir atacando o zend, que mais essa foi resolvida.&lt;br /&gt;
Até a próxima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;h2&gt;

Referências:&lt;/h2&gt;
&lt;br /&gt;
UOL Host : &lt;a href=&quot;http://www.uolhost.com.br/blog/1912/zend-framework-relacionamento-de-tabelas-com-o-zend_db_table&quot; target=&quot;_blank&quot;&gt;Zend Framework: Relacionamento de tabelas com o Zend_Db_Table&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.uolhost.com.br/blog/1912/zend-framework-relacionamento-de-tabelas-com-o-zend_db_table&quot;&gt;&lt;/a&gt; &lt;br /&gt;
Zend Manual : &lt;a href=&quot;http://framework.zend.com/manual/en/zend.db.table.relationships.html&quot;&gt;Zend_Db_Table Relationships&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/3822563938240199183/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/11/voce-e-meu-amigo-nao-e-relacionamento.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/3822563938240199183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/3822563938240199183'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/11/voce-e-meu-amigo-nao-e-relacionamento.html' title='Você é meu amigo, não é ? :: Relacionamento de tabelas simples com Zend Models'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-4112127722784277906</id><published>2011-10-18T17:47:00.000-07:00</published><updated>2011-10-18T17:49:09.040-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="controller"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="helpers"/><category scheme="http://www.blogger.com/atom/ns#" term="layout"/><category scheme="http://www.blogger.com/atom/ns#" term="views"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Que cara é essa  ? :: Mudando o layout de suas páginas</title><content type='html'>&lt;a href=&quot;http://www.felipedjinn.com.br/2010/12/10/zend-layout-templates-no-zend-framework/&quot;&gt;&lt;/a&gt;&lt;br /&gt;
Muito mais que mudar apenas o CSS, as vezes lidamos com a situação em que a própria estrutura da página têm de ser diferente das outras - ou talvez queiramos ( por algum motivo MUITO especial ) que todas as páginas tenham um layout diferente umas das outras.&lt;br /&gt;
&lt;br /&gt;
Um exemplo bem simples é um site com login logo na entrada. Na primeira página, o layout é o apropriado para o login, e as páginas a seguir ao login possuem o layout padrão.&lt;br /&gt;
&lt;br /&gt;
Pois bem, assim como nos outros posts, vou mostrar que a coisa não é um bicho de sete cabeças no Zend.&lt;br /&gt;
&lt;br /&gt;
Primeiro, habilite seus layouts com zend tools&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ zf enable layout&lt;/pre&gt;
&lt;br /&gt;
Agora, vai ser cirado na pasta &quot;application/layouts&quot; o arquivo padrão de layout do zend, o &quot;layout.phtml&quot;, edite como você quiser.&lt;br /&gt;
&lt;br /&gt;
Nessa mesma pasta, crie um arquivo &quot;layout2.phtml&quot; e edite com o layout alternativo que deseja.&lt;br /&gt;
&lt;br /&gt;
Vá até o controller onde está a action da página onde será aplicado o layout alternativo e coloque nessa action a linha&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;...
$this-&amp;gt;_helper-&amp;gt;layout-&amp;gt;setLayout(&#39;layout2&#39;);
...
&lt;/pre&gt;
&lt;br /&gt;
E pronto. Basta abrir o action e terá seu layout alternativo para ele. Se for usar um css alternativo também, basta colocar na action&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;...
$this-&amp;gt;_helper-&amp;gt;layout-&amp;gt;setLayout(&#39;layout2&#39;);
$this-&amp;gt;view-&amp;gt;headLink()-&amp;gt;appendStylesheet( $this-&amp;gt;view-&amp;gt;baseUrl(&#39;caminho_do_css/estilo_alternativo.css&#39; )  );
...&amp;nbsp;&lt;/pre&gt;
&lt;br /&gt;
E pode repetir essa situação pra quantas views desejar e pra quantos layouts você quiser.&lt;br /&gt;
&lt;br /&gt;
Felizes ? Espero que sim. Abraços a todos e até a próxima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;h2&gt;



Referências:&lt;/h2&gt;
Felipe Djin : &lt;a href=&quot;http://www.felipedjinn.com.br/2010/12/10/zend-layout-templates-no-zend-framework/&quot;&gt;Zend_Layout: Templates no Zend Framework&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Zend Manual : &lt;a href=&quot;http://framework.zend.com/manual/en/zend.layout.options.html&quot;&gt;Zend_Layout Configuration Options&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/4112127722784277906/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/10/que-cara-e-essa-mudando-o-layout-de.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/4112127722784277906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/4112127722784277906'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/10/que-cara-e-essa-mudando-o-layout-de.html' title='Que cara é essa  ? :: Mudando o layout de suas páginas'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>São Paulo, Brasil</georss:featurename><georss:point>-23.5489433 -46.6388182</georss:point><georss:box>-24.014749300000002 -47.270532200000005 -23.0831373 -46.0071042</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-6933407161736100820</id><published>2011-10-11T06:48:00.000-07:00</published><updated>2011-10-11T07:44:22.089-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="estático"/><category scheme="http://www.blogger.com/atom/ns#" term="link"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="rewrite"/><category scheme="http://www.blogger.com/atom/ns#" term="router"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Pra onde vamos ?  :: Modificar os links de suas paǵinas com roteamento estático</title><content type='html'>É comum que as vezes precisamos mudar o endereço de uma página em particular de nossa aplicação, de forma a ser mais amigável.&lt;br /&gt;
&lt;br /&gt;
Por exemplo, se tivermos &quot;por acaso&quot; uma url da forma&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;http://meusite.com/secao1/secao2/secao3/secao4&lt;/pre&gt;
&lt;br /&gt;
mas a página &quot;secao4&quot; é tão importante, que precisamos facilitar sua escrita na url ( por questões de SEO ) da forma mais simples possível, assim&lt;br /&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;http://meusite.com/mysection&lt;/pre&gt;
&lt;br /&gt;
ou seja, queremos que a url &quot;secao1/secao2/secao3/secao4&quot; tenha o nome &quot;mysection&quot; mas que aponte para &quot;secao1/secao2/secao3/secao4&quot;.&lt;br /&gt;
&lt;br /&gt;
Para fazer isso, é muito simples.&lt;br /&gt;
Num cenário de exemplo, temos os seguintes links que queremos mudar as urls &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;http://meusite.com/secao/subsecao1
http://meusite.com/secao/subsecao2
http://meusite.com/secao/subsecao3
&lt;/pre&gt;
&lt;br /&gt;
e queremos mudar para&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;http://meusite.com/mysection1
http://meusite.com/mysection2
http://meusite.com/mysection3
&lt;/pre&gt;
&lt;br /&gt;
Para fazer isso, coloque em seu &#39;Bootstrap.php&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;//&lt;/pre&gt;
&lt;pre class=&quot;brush: php&quot;&gt;// Inicializa o rotamento pelo bootstrap.&lt;/pre&gt;
&lt;pre class=&quot;brush: php&quot;&gt;// &lt;/pre&gt;
&lt;pre class=&quot;brush: php&quot;&gt;protected function _initRouter(){
		
     // Pega a instância do controller.
     $front_controller = Zend_Controller_Front::getInstance();
     $router = $front_controller-&amp;gt;getRouter();
		
     // Cria os alias para os roteamentos.
     $link1  = new Zend_Controller_Router_Route_Static(&#39;mysection1&#39;,array(&#39;controller&#39; =&amp;gt; &#39;secao&#39;, &#39;action&#39; =&amp;gt; &#39;subsecao1&#39;) );
     $link2  = new Zend_Controller_Router_Route_Static(&#39;mysection2&#39;,array(&#39;controller&#39; =&amp;gt; &#39;secao&#39;, &#39;action&#39; =&amp;gt; &#39;subsecao2&#39;) );		
     $link3  = new Zend_Controller_Router_Route_Static(&#39;mysection3&#39;,array(&#39;controller&#39; =&amp;gt; &#39;secao&#39;, &#39;action&#39; =&amp;gt; &#39;subsecao3&#39;) );
		
     // Adiciona as rotas.
     $router-&amp;gt;addRoute(&#39;myroute1&#39;, $link1);
     $router-&amp;gt;addRoute(&#39;myroute2&#39;, $link2);
     $router-&amp;gt;addRoute(&#39;myroute3&#39;, $link3);		
}&lt;/pre&gt;
&lt;br /&gt;
Explicando: &#39;$link1&#39; é o roteamento do endereço &#39;/secao/subsecao1&#39; para o nome &#39;mysection1&#39;  e &#39;myroute1&#39; é o nome do roteamento que você irá usar para o zend_navigation.&lt;br /&gt;
&lt;br /&gt;
Sim, se você criou menus com o zend_navigation, vai ter de mudar umas coisinhas se não quiser ter problema.&lt;br /&gt;
&lt;br /&gt;
Supondo que você criou seus menus com um arquivo xml, então você deve ter uma seção para o link &#39;/secao/subsecao1&#39; dessa forma&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&lt;label&gt;Meu Link&lt;/label&gt;
&lt;controller&gt;secao&lt;/controller&gt;
&lt;action&gt;subsection1&lt;/action&gt;
&lt;/pre&gt;
&lt;br /&gt;
Agora não têm mistério, basta acrescentar &#39;&amp;lt;route&amp;gt;myroute1&amp;lt;/route&amp;gt;&#39; nessa parte de seu xml:&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&lt;label&gt;Meu Link&lt;/label&gt;
&lt;controller&gt;secao&lt;/controller&gt;
&lt;action&gt;subsection1&lt;/action&gt;
&lt;route&gt;myroute1&lt;/route&gt;
&lt;/pre&gt;
&lt;br /&gt;
e o link do menu irá pegar o roteamento para &#39;secao/subsection1&#39;.&lt;br /&gt;
Nos outros links do menu, você DEVE acrescentar &#39;&amp;lt;route&amp;gt;default&amp;lt;/route&amp;gt;&#39; , pois se não fizer isso, todos os links do menu vão ser roteados para o último router que você definiu no Bootstrap. &lt;br /&gt;
&lt;br /&gt;
Para outros links normais de seu site que apontem para &#39;/secao/subsecao1&#39;, não é preciso modificar nada, pois o roteamento é automatico para eles.&lt;br /&gt;
&lt;br /&gt;
Esse roteamento do zend é estático, isso é, apenas para links que não requerem parâmetros. Para outros tipos de roteamento, aguarde próximos artigos.&lt;br /&gt;
&lt;br /&gt;
Até lá =)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;h2&gt;


Referências:&lt;/h2&gt;
Zend Manual : &lt;a href=&quot;http://framework.zend.com/manual/en/zend.controller.router.html&quot;&gt;The standart router&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;
&lt;br /&gt;
&lt;hr /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/6933407161736100820/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/10/pra-onde-vamos-modificar-os-links-de.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/6933407161736100820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/6933407161736100820'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/10/pra-onde-vamos-modificar-os-links-de.html' title='Pra onde vamos ?  :: Modificar os links de suas paǵinas com roteamento estático'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-7513580006707434005</id><published>2011-10-09T16:37:00.000-07:00</published><updated>2011-10-09T16:37:56.595-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="helper"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="views"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Aos seus pés :: Como colocar seu javascript no fim da página</title><content type='html'>Quem lida com javascript sabe que de vez em sempre, é uma boa prática colocar o seu script no fim da página.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Com o Zend Framework temos mais essa facilidade, e bota fácil nisso.&lt;br /&gt;
&lt;br /&gt;
Para colocar qualquer código javascript no corpo da página, vá em seu arquivo &#39;layout.phtml&#39;, coloque na parte que deseja o view helper &lt;i&gt;inlineScript&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php print $this-&amp;gt;inlineScript(); ?&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
E a partir dai, em qualquer view, acrescente o javascript que precisar dessa forma:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php $this-&amp;gt;inlineScript()-&amp;gt;appendFile($caminhodeseujavascript); ?&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
E pronto, o seu script vai ser impresso exatamente na posição onde foi colocado o método &lt;i&gt;inlineScript()&lt;/i&gt; no seu layout.&lt;br /&gt;
&lt;br /&gt;
Essa mal teve graça de tão simples. Até a próxima dica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;h2&gt;
Referências:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;stoimen&#39;s web log&lt;/b&gt; : &lt;a href=&quot;http://www.stoimen.com/blog/2010/06/24/zend-framework-inject-javascript-code-in-a-actionview/&quot;&gt;Zend Framework: Inject JavaScript Code in a Action/View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Zend Manual&lt;/b&gt; : &lt;a href=&quot;http://framework.zend.com/manual/en/zend.view.helpers.html&quot;&gt;View Helpers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/7513580006707434005/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/10/aos-seus-pes-como-colocar-seu.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7513580006707434005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7513580006707434005'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/10/aos-seus-pes-como-colocar-seu.html' title='Aos seus pés :: Como colocar seu javascript no fim da página'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-186283298575821273</id><published>2011-08-17T12:32:00.000-07:00</published><updated>2011-08-17T13:10:56.122-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="forum"/><category scheme="http://www.blogger.com/atom/ns#" term="htaccess"/><category scheme="http://www.blogger.com/atom/ns#" term="informatica"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="public"/><category scheme="http://www.blogger.com/atom/ns#" term="rewrite"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><category scheme="http://www.blogger.com/atom/ns#" term="zendbrasil"/><title type='text'>Cut off :: Tirando o &#39;public&#39; do endereço de sua aplicação Zend</title><content type='html'>Essa foi plageada descaradamente do cologa &lt;a href=&quot;http://www.zendbrasil.com.br/memberlist.php?mode=viewprofile&amp;u=2&quot;&gt;Naner&lt;/a&gt; do forum &lt;a href=&quot;http://www.zendbrasil.com.br&quot;&gt;ZendBrasil&lt;/a&gt;, e postei aqui porque vivo esquecendo onde acho essas dicas.&lt;br /&gt;
&lt;br /&gt;
Todo mundo que inicia no Zend se depara com o fato de todas as páginas aparecerem com o endereço&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;http://meusiteemzend.com.br/public/umapagina&lt;/pre&gt;&lt;br /&gt;
e uma hora ou outra, vai querer que o endereço fique em uma forma &quot;bonita&quot; - as chamadas URL&#39;s limpas, assim:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;http://meusiteemzend.com.br/umapagina&lt;/pre&gt;&lt;br /&gt;
Para fazer isso é rápido e simples.&lt;br /&gt;
Na raiz de seu projeto ( o primeiro acima do public ai ), crie um arquivo &#39;index.php&#39;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;&amp;lt;?php

    define(&#39;RUNNING_FROM_ROOT&#39;, true);
    include &#39;public/index.php&#39;;
     
&lt;/pre&gt;&lt;br /&gt;
Não feche o código com &#39;?&amp;gt;&#39;. &lt;br /&gt;
Agora, na mesma pasta raiz, crie um arquivo &#39;.htaccess&#39; com o conteudo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;SetEnv APPLICATION_ENV production

RewriteEngine On
RewriteRule .* index.php

&lt;/pre&gt;&lt;br /&gt;
E rode a página. Se deu tudo certo, leia outro post meu, porque foi muito rápido e agora você está com tempo livre. :D&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;AH, e não se esqueça, se antes você colocava nos links do zend a referencia ao &#39;public&#39; como &#39;/&#39; somente, agora você deve referenciar como &#39;/public/&#39;.&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;Referências:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.zendbrasil.com.br/viewtopic.php?f=23&amp;t=53&amp;p=144&amp;hilit=public#p144&quot;&gt;Como remover o /public de seu projeto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zend Manual: &lt;a href=&quot;http://zendframework.com/manual/1.11/en/project-structure.rewrite.html&quot;&gt;Rewrite Configuration Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/186283298575821273/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/08/cut-off-tirando-o-public-do-endereco-de.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/186283298575821273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/186283298575821273'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/08/cut-off-tirando-o-public-do-endereco-de.html' title='Cut off :: Tirando o &#39;public&#39; do endereço de sua aplicação Zend'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-6785934225289599361</id><published>2011-08-17T11:08:00.000-07:00</published><updated>2011-09-19T04:17:44.173-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="garçom"/><category scheme="http://www.blogger.com/atom/ns#" term="informatica"/><category scheme="http://www.blogger.com/atom/ns#" term="menu"/><category scheme="http://www.blogger.com/atom/ns#" term="multiplos"/><category scheme="http://www.blogger.com/atom/ns#" term="navigator"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="programação"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><category scheme="http://www.blogger.com/atom/ns#" term="zend_menu"/><category scheme="http://www.blogger.com/atom/ns#" term="zend_navigator"/><title type='text'>Garçon, os menus :: Como criar multiplos menus com Zend_Navigation</title><content type='html'>No momento que escrevo estas linhas estou ciente que não falei p*$$@ nenhuma sobre Zend Navigation e a criação de menus, mas como na net tá lotado de tutoriais que já falam sobre isso, deixarei pra outro dia pra fazer minha própria versão.&lt;br /&gt;
&lt;br /&gt;
Por hora, quero falar sobre o segundo passo sobre menu : como criar 2 menus. Ambicioso não ?&lt;br /&gt;
&lt;br /&gt;
Para nosso tutorial, usaremos o seguinte arquivo XML para menus em &#39;/application/configs/menus.xml&#39; :&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot; &gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
	
&lt;configdata&gt;

&lt;nav1&gt;

    &lt;item11&gt;
        &lt;label&gt;Item 11&lt;/label&gt;
            &lt;uri&gt;#&lt;/uri&gt;
    &lt;/item11&gt;

    &lt;item12&gt;
        &lt;label&gt;Item 12&lt;/label&gt;
	    &lt;uri&gt;#&lt;/uri&gt;
    &lt;/item12&gt;

&lt;/nav1&gt;

&lt;nav2&gt;

    &lt;item21&gt;
        &lt;label&gt;Item 21&lt;/label&gt;
	    &lt;uri&gt;#&lt;/uri&gt;
    &lt;/item21&gt;

    &lt;item22&gt;
        &lt;label&gt;Item 22&lt;/label&gt;
            &lt;uri&gt;#&lt;/uri&gt;
    &lt;/item22&gt;

    &lt;item23&gt;
	&lt;label&gt;Item 23&lt;/label&gt;
  	    &lt;uri&gt;#&lt;/uri&gt;
    &lt;/item23&gt;

&lt;/nav2&gt;

&lt;/configdata&gt;

&lt;/pre&gt;&lt;br /&gt;
Onde &#39;nav1&#39; e &#39;nav2&#39; são dois menus diferentes e independentes que queremos usar onde quisermos quando quisermos.&lt;br /&gt;
&lt;br /&gt;
Para realizar tal intento, criamos no &#39;/application/Bootstrap.php&#39; o inicializador de menus:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;...

// Inicializa os menus de navegação.
protected function _initNavigation(){
					
    $nav1Config = new Zend_Config_Xml(APPLICATION_PATH . &#39;/configs/menu.xml&#39;, &#39;nav1&#39;);
    $navigation1 = new Zend_Navigation($nav1Config);
    Zend_Registry::set(&#39;Navigation1&#39;, $navigation1);

    $nav2Config = new Zend_Config_Xml(APPLICATION_PATH . &#39;/configs/menu.xml&#39;, &#39;nav2&#39;);
    $navigation2 = new Zend_Navigation($nav2Config);		
    Zend_Registry::set(&#39;Navigation2&#39;, $navigation2);

}

...

&lt;/pre&gt;&lt;br /&gt;
Coloque na action do controller da sua página a declaração&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;public function indexAction(){

    $Navigation1 = Zend_Registry::get(&#39;Navigation1&#39;);
    $this-&gt;view-&gt;navigation1 = $Navigation1;

    $Navigation2 = Zend_Registry::get(&#39;Navigation2&#39;);
    $this-&gt;view-&gt;navigation2 = $Navigation2;
    
}

&lt;/pre&gt;&lt;br /&gt;
E finalmente, na view de sua página coloque:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot; &gt;&lt;h1&gt;Menu nav1&lt;/h1&gt;&amp;lt;?php

$options1 = array(&#39;ulClass&#39; =&amp;gt; &#39;menu1&#39;);
print $this-&amp;gt;navigation()-&amp;gt;menu()-&amp;gt;renderMenu($this-&amp;gt;navigation1, $options1);

?&amp;gt;

&lt;h1&gt;Menu nav2&lt;/h1&gt;&amp;lt;?php

$options2 = array(&#39;ulClass&#39; =&amp;gt; &#39;menu2&#39;);
print $this-&amp;gt;navigation()-&amp;gt;menu()-&amp;gt;renderMenu($this-&amp;gt;navigation2, $options2);

?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Os &#39;$optionsN&#39; é um extra que coloquei no tutorial para você poder definir classes para cada menu separadamente, uma reles mãozinha para ajudar a fazer seu design :D&lt;br /&gt;
&lt;br /&gt;
E se tudo deu certo, vai aparecer cada menu do xml separadamente, com seus própios itens, com sua própria classe, e você pode colocar na view que quiser e quando quiser.&lt;br /&gt;
&lt;br /&gt;
Agora, essa solução é pra quando você quer acrescentar menus de uma forma particular em certas páginas. &lt;br /&gt;
Um jeito de deixar a solução &quot;global&quot;, inclusive pra ser usado com &#39;zend_layout&#39;, basta fazer no &#39;Bootstrap.php&#39; &lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;...

// Inicializa os menus de navegação.
protected function _initNavigation(){
					
    $nav1Config = new Zend_Config_Xml(APPLICATION_PATH . &#39;/configs/menu.xml&#39;, &#39;nav1&#39;);
    $navigation1 = new Zend_Navigation($nav1Config);
    Zend_Registry::set(&#39;Navigation1&#39;, $navigation1);

    $nav2Config = new Zend_Config_Xml(APPLICATION_PATH . &#39;/configs/menu.xml&#39;, &#39;nav2&#39;);
    $navigation2 = new Zend_Navigation($nav2Config);		
    Zend_Registry::set(&#39;Navigation2&#39;, $navigation2);

    // Até aqui não muda nada. Você apenas precisará acrescentar umas 
    // variáveis para mandar para a view :
    $view-&gt;navigation1 = Zend_Registry::get(&#39;Navigation1&#39;);
    $view-&gt;navigation2 = Zend_Registry::get(&#39;Navigation2&#39;);

}

...

&lt;/pre&gt;&lt;br /&gt;
e pronto, basta colocar as linhas&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;...

&lt;h1&gt;Meu menu 1&lt;/h1&gt;
&amp;lt;?php print $this-&gt;navigation()-&gt;menu()-&gt;renderMenu($this-&gt;navigation1); ?&amp;gt;

&lt;h1&gt;Meu menu 2&lt;/h1&gt;
&amp;lt;?php print $this-&gt;navigation()-&gt;menu()-&gt;renderMenu($this-&gt;navigation2); ?&amp;gt;

...&lt;/pre&gt;&lt;br /&gt;
com ou sem o &#39;$optionsN&#39; em qualquer view ou no layout que será renderizado o menu que você deseja.&lt;br /&gt;
&lt;br /&gt;
Percebam que a técnica pode ser estendida para quantos menus desejar também,basta ir acrescentando um &#39;nav3&#39;, &#39;nav4&#39;, etc ; e ir seguindo o padrão aqui.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a href=&#39;http://simplesne.blogspot.com&#39; &gt;Simples, né ?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;Referências:&lt;/h3&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&#39;http://blog.kaning.co.uk/archives/216&#39; &gt;Having multiple instances of Zend Navigation in a single View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://framework.zend.com/manual/en/zend.navigation.html&quot; &gt;Zend_Navigation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/6785934225289599361/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/08/garcon-os-menus-como-criar-multiplos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/6785934225289599361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/6785934225289599361'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/08/garcon-os-menus-como-criar-multiplos.html' title='Garçon, os menus :: Como criar multiplos menus com Zend_Navigation'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-653724493767154983</id><published>2011-07-01T12:45:00.000-07:00</published><updated>2011-10-11T07:41:41.637-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="biblioteca"/><category scheme="http://www.blogger.com/atom/ns#" term="classe"/><category scheme="http://www.blogger.com/atom/ns#" term="customizar"/><category scheme="http://www.blogger.com/atom/ns#" term="extensão"/><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="helpers"/><category scheme="http://www.blogger.com/atom/ns#" term="views"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Silêncio na biblioteca : Como usar outras classes em sua biblioteca customizada</title><content type='html'>Escrever suas próprias bibliotecas customizadas é essencial quando se faz certos tipos de aplicação.&lt;br /&gt;
Mas o bom de orientação a objetos é que podemos reutilizar as variáveis e métodos já existentes em outras classes, e no caso do Zend, é preferível que utilizemos os métodos já definidos nas classes de sua biblioteca, ou ainda, usar alguma classe de controller, model ou helper que você já fez, porque afinal gastar tempo e espaço ( ainda que seja ridiculamente pequeno ) no HD quando podemos utilizá-los não ?&lt;br /&gt;
&lt;br /&gt;
Pois bem, aqui temos dois modos de se reutilizar uma classe criada na estrutura do Zend.&lt;br /&gt;
&lt;br /&gt;
A primeira é a clássica &quot;extends&quot;, o mais comum quando se trabalha com objetos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Mylib_Minhaclasse extends ClasseDesejada {

...

} 
&lt;/pre&gt;
&lt;br /&gt;
Dai já pode utilizar os métodos e variáveis da classe desejada como se fosse de sua classe. Bem simples.&lt;br /&gt;
&lt;br /&gt;
Um outro modo muito legal que descobri também para utilizar qualquer biblioteca sem precisar extender é esse:&lt;br /&gt;
&lt;br /&gt;
1 - Declare o construtor de sua classe&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Mylib_Minhaclasse {

    public function Mylib_Minhaclasse(){


    }

...

} 
&lt;/pre&gt;
&lt;br /&gt;
2 - Dentro do construtor, chama explicitamente a classe que quer usar usando &#39;require_once&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Mylib_Minhaclasse {

    public function Mylib_Minhaclasse(){

          require_once( APPLICATION_PATH.&quot;/caminho_pra_classe_desejada/ClasseDesejada.php&quot;);

    }

...

} 
&lt;/pre&gt;
&lt;br /&gt;
3 - Crie uma variável na sua classe para criar o objeto da classe desejada:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Mylib_Minhaclasse {

    protected $obj = null;

    public function Mylib_Minhaclasse(){

          require_once( APPLICATION_PATH.&quot;/caminho_pra_classe_desejada/ClasseDesejada.php&quot;);
          $obj = new ClasseDesejada.php

    }

...

} 
&lt;/pre&gt;
&lt;br /&gt;
4 - Agora, inicializa o objeto da classe desejada usando o método &#39;init&#39;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Mylib_Minhaclasse {

    protected $obj = null;

    public init(){

        $this-&amp;gt;Mylib_Minhaclasse();

    }

    public function Mylib_Minhaclasse(){

          require_once( APPLICATION_PATH.&quot;/caminho_pra_classe_desejada/ClasseDesejada.php&quot;);
          $obj = new ClasseDesejada.php

    }

...

} 
&lt;/pre&gt;
&lt;br /&gt;
E pronto, já pode usar em sua biblioteca customizada qualquer classe que desejar sem precisar extender nada. Achei legal assim, porque você pode usar mais de uma classe, o que extendendo limita a somente uma, e de certo modo, deixa sua classe mais &quot;pura&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
Referências: &lt;a href=&quot;http://framework.zend.com/manual/1.11/en/performance.classloading.html&quot;&gt;http://framework.zend.com/manual/1.11/en/performance.classloading.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/653724493767154983/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/07/silencio-na-biblioteca-como-usar-outras.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/653724493767154983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/653724493767154983'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/07/silencio-na-biblioteca-como-usar-outras.html' title='Silêncio na biblioteca : Como usar outras classes em sua biblioteca customizada'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-7186564736768869086</id><published>2011-06-12T20:56:00.000-07:00</published><updated>2011-07-22T20:27:37.877-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="helper"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="views"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>HELP !  :: Criando Views Helpers no Zend Framework</title><content type='html'>Os View Helpers são classes extras que você usa para realizar certas tarefas específicas nas views. Ou seja, como o próprio nome diz, eles servem para auxiliar nas views.&lt;br /&gt;
Para criar uma View Helper, basta ir na pasta &#39;application/views/helpers&#39; criar uma classe &#39;Minhaviewhelper.php&#39;, e no conteúdo coloque&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Zend_View_Helper_Minhaviewhelper extends Zend_View_Helper_Abstract {
  
         public function minhafuncaoviewhelper(){

                       ...

         }
  
}
&lt;/pre&gt;&lt;br /&gt;
E pronto, basta ir a qualquer controller e usar &lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class MeucontrollerController extends Zend_Controller_Action {

                      ...

             public function minhafuncao(){

                      ...

                     $this-&gt;view-&gt;minhafuncaoviewhelper();

             }

                      ...

}&lt;/pre&gt;&lt;br /&gt;
ou numa view qualquer&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;&lt;!-- application/views/scripts/meucontroller/minhaview.phtml --&gt;

blablabla em html

&amp;lt;? $this-&gt;minhafuncaoviewhelper(); ?&amp;gt;

blablabla

&lt;/pre&gt;&lt;br /&gt;
Feito.&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;Referências: &lt;a href=&quot;http://framework.zend.com/manual/en/zend.view.helpers.html&quot;&gt;http://framework.zend.com/manual/en/zend.view.helpers.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/7186564736768869086/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/06/help-criando-views-helpers-no-zend.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7186564736768869086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7186564736768869086'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/06/help-criando-views-helpers-no-zend.html' title='HELP !  :: Criando Views Helpers no Zend Framework'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-1044154622169370216</id><published>2011-06-10T14:28:00.000-07:00</published><updated>2011-09-19T04:20:13.469-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="enviar"/><category scheme="http://www.blogger.com/atom/ns#" term="formularios"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><category scheme="http://www.blogger.com/atom/ns#" term="zend form"/><title type='text'>Formule alguma coisa : Criando formulários em Zend Framework parte 3 :: Salvando dados enviados dos formulários</title><content type='html'>Agora, após termos criado o formulário ( &lt;a href=&#39;http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando.html&#39; &gt;parte 1&lt;/a&gt; ) e criado os métodos de envio dos dados ( &lt;a href=&#39;http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_10.html&#39; &gt;parte 2&lt;/a&gt; ), vamos slavá-los num banco de dados.&lt;br /&gt;
&lt;br /&gt;
Para inserir dados de seu formulario no banco de dados, usamos os models.&lt;br /&gt;
&lt;br /&gt;
Abre um terminal e crie o model&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #000; color: green&quot; &gt;$ zf create model meumodel&lt;/pre&gt;&lt;br /&gt;
Abra o arquivo &#39;models/Meumodel.php&#39; e veja que dentro está assim, vaziozão:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Model_Meumodel extends Zend_Db_Table {
 
}
&lt;/pre&gt;&lt;br /&gt;
Esse vai ser a classe com que você irá trabalhar os dados do banco de dados com o controller e vice-versa.&lt;br /&gt;
Em específico ao nosso caso, vai ser o responsável por salvar os dados do formulário no banco de dados.&lt;br /&gt;
Primeiro, setamos a tabela do banco de dados que será trabalhada, acrescentando uma variável protegida no model&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Model_Meumodel extends Zend_Db_Table {

    protected $_name = &#39;minhatabela&#39;;

}
&lt;/pre&gt;&lt;br /&gt;
e agora, o campo da tabela que trabalha como seu índice&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Model_Meumodel extends Zend_Db_Table {

    protected $_name = &#39;minhatabela&#39;;
    protected $_primary = &#39;id&#39;;

}
&lt;/pre&gt;&lt;br /&gt;
Colocamos o campo &#39;id&#39; como mera ilustração, pode ser qualquer outro campo, e no caso de você ter esquecido de declarar o campo índice, o Zend toma por padrão o primeiro campo chamado &#39;id&#39; que porventura tenha na tabela. No caso de não haver um campo &#39;id&#39; e você não ter declarado o campo índice, não sei o que acontece, por isso, é bem melhor declarar mesmo explicitamente o &#39;id&#39; pra não correr riscos.&lt;br /&gt;
Agora, criemos no model a função que irá cadastrar o usuário&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Model_Meumodel extends Zend_Db_Table {

    protected $_name = &#39;minhatabela&#39;;
    protected $_primary = &#39;id&#39;;

    /*
     * Função que insere dados na tabela
     */
    public function insereDados($data){

        // Insere os dados do array &#39;$data&#39; no banco de dados.
        // Caso não seja possível inserir no banco de dados retorna falso.
        try{ $this-&gt;insert($data); return true; }
        catch( Zend_Db_Exception $e){ return false; }

    }

}
&lt;/pre&gt;&lt;br /&gt;
&#39;$this-&gt;insert()&#39; é o método da classe Zend_Db_Table que faz o trabalho sujo.&lt;br /&gt;
Agora, voltando ao nosso controller do formulario da parte 2 de nosso tutorial, lembremos que deixei uma parte escrito &#39;&amp;lt;codigo surpresa&amp;gt;&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;// Caso os dados sejam válidos.
if( $form-&gt;isValid($data) ){

    &amp;lt;codigo surpresa&amp;gt; &lt;- olha a parte do código surpresa aqui

}
&lt;/pre&gt;
Pois bem, nessa parte, que fica logo depois de termos recebido os dados e depois deles term sido devidamente validados, é onde colocamos o resto do codigo

&lt;pre class=&quot;brush: php&quot; &gt;// Cria o objeto do model.
$objeto_model = new Model_Meumodel();
    
// Tenta inserir os dados no db.
// Caso dê certo, é impresso uma mensagem na view.
if( $objeto_model-&gt;insereDados($data) ){

    $mensagens = &quot;Usuário criado com sucesso.&quot;;
    $this-&gt;view-&gt;mensagens = $mensagens;
     
}

// Caso dê algo errado com a inserção no banco de dados,
// é impresso uma mensagem de erro e voltamos ao formulário
// com os dados populado, para caso seja algum problema de 
// digitação.
else{
      $this-&gt;view-&gt;mensagens = &quot;Não foi possível criar usuário.&quot;;
      // Reenvia os dado para o formulário.
      $form-&gt;populate($data);
      $this-&gt;view-&gt;formulario = $form;
}
&lt;/pre&gt;E assim completamos nosso formulário em Zend. Basta testar e usar.

&lt;hr/&gt;Referência: &lt;a href=&quot;http://framework.zend.com/manual/en/zend.form.html&quot;&gt;http://framework.zend.com/manual/en/zend.form.html&lt;/a&gt;
&lt;a href=&quot;http://framework.zend.com/manual/1.11/en/learning.quickstart.create-model.html&quot;&gt;http://framework.zend.com/manual/1.11/en/learning.quickstart.create-model.html&lt;/a&gt;

&lt;hr/&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/1044154622169370216/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_6520.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/1044154622169370216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/1044154622169370216'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_6520.html' title='Formule alguma coisa : Criando formulários em Zend Framework parte 3 :: Salvando dados enviados dos formulários'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-7065998794553049442</id><published>2011-06-10T14:18:00.000-07:00</published><updated>2011-09-19T04:20:34.002-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dados"/><category scheme="http://www.blogger.com/atom/ns#" term="enviar"/><category scheme="http://www.blogger.com/atom/ns#" term="formulario"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><category scheme="http://www.blogger.com/atom/ns#" term="zend form"/><title type='text'>Formule alguma coisa : Criando formulários em Zend Framework parte 2 :: Submetendo dados</title><content type='html'>Após criar o formulário dado na &lt;a href=&quot;http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando.html&quot;&gt;parte 1&lt;/a&gt; de nosso tutorial, agora vamos submeter os dados recebidos pelo formulário.&lt;br /&gt;
&lt;br /&gt;
No arquivo de formulario, setamos a ação como do form para &#39;minhaacao&#39;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Form_Meuformulario extends Zend_Form{

    public function init(){

        // Ação para a página de envio do form.
        $this-&amp;gt;setAction(&#39;.../minhaacao&#39;);

        // Método de envio do form.
        $this-&amp;gt;setMethod(&#39;post&#39;);
        
        // Uma caixa de texto.
        $this-&amp;gt;addElement(&#39;text&#39;, &#39;nomedoform&#39;,
                          array(&#39;label&#39; =&amp;gt; &#39;Label do form&#39;)
                         );

        // Botão de submissão.
        $this-&amp;gt;addElement(&#39;submit&#39;, &#39;submit&#39;, 
         array(&#39;label&#39;    =&amp;gt; &#39;Enviar&#39;)
  );

   }

}
&lt;/pre&gt;&lt;br /&gt;
Editemos o arquivo de controller com a acao &#39;minhaacao&#39; e acrescentamos a linha que irá receber os dados do formulario&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class MeucontrollerController extends Zend_Controller_Action{

...

      public function minhaacaoAction(){

             // Cria o objeto de formulario.
             $form = new Form_Meuform();
 
             // Envia para o view o formulario.
             $this-&amp;gt;view-&amp;gt;formulario = $form;

             // Pega os dados enviados via POST.
             $data = $this-&amp;gt;_request-&amp;gt;getPost();

      }

...

}
&lt;/pre&gt;&lt;br /&gt;
Você pode mandar os dados para o view atraves da linha&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;...
$this-&amp;gt;view-&amp;gt;dados = $data;
    ...
&lt;/pre&gt;&lt;br /&gt;
e pra visualizar na views é só mandar imprimir com a linha&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;...
&amp;lt;?php print $this-&amp;gt;dados; ?&amp;gt;
    ...
&lt;/pre&gt;&lt;br /&gt;
O próximo passo é a autenticação dos dados enviados. Para isso acrescentamos as linhas&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class MeucontrollerController extends Zend_Controller_Action{
    
    ...

    public function minhaacaoAction(){

             // Cria o objeto de formulario.
             $form = new Form_Meuform();
 
             // Envia para o view o formulario.
             $this-&amp;gt;view-&amp;gt;formulario = $form;

             // Verifica se foram enviados dados via post.
             if( $this-&amp;gt;_request-&amp;gt;isPost() ){
             
                // Pega os dados enviados via POST.
                $data = $this-&amp;gt;_request-&amp;gt;getPost();

                // Caso os dados sejam válidos.
                if( $form-&amp;gt;isValid($data) ){
                      &amp;lt;codigo surpresa&amp;gt;
                }

             }
             else{
                // Imprime na view o formulario por default 
                // assim que entra na página do formulário.
                $this-&amp;gt;view-&amp;gt;formulario = $form;
             }

      }

...

}
&lt;/pre&gt;&lt;br /&gt;
Aqui acrescentamos uma condição para verificar se foram enviados dados via POST. Se foram, então os dados são armazenados em &#39;$data&#39;, assim, é verificado com &#39;isValid($data)&#39; se os dados são validos de acordo com as regras de validação estipuladas pelo formulário que fizemos.&lt;br /&gt;
Agora, pra completar essa parte, queremos que, no caso de os dados não forem válidos, retornar ao formulário pra corrigir esses dados. Para não ter que fazer o usuário repetir tudo de novo, repopulamos o formulários com esses mesmos dados.&lt;br /&gt;
Para isso, acrescentamos mais umas linhas na ação acima:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class MeucontrollerController extends Zend_Controller_Action{
...

    public function minhaacaoAction(){

        // Cria o objeto de formulario.
        $form = new Form_Meuform();
 
        // Envia para o view o formulario.
        $this-&amp;gt;view-&amp;gt;formulario = $form;

        // Verifica se foram enviados dados via post.
        if( $this-&amp;gt;_request-&amp;gt;isPost() ){
             
            // Pega os dados enviados via POST.
            $data = $this-&amp;gt;_request-&amp;gt;getPost();

            // Caso os dados sejam válidos.
            if( $form-&amp;gt;isValid($data) ){
                &amp;lt;codigo surpresa&amp;gt;
            }
            // Caso os dados não sejam válidos.
            else{
                // Se os dados não forem válidos, é reimpresso o
                // formulário com os dados repopulados para serem
                // corrigidos.
                $form-&amp;gt;populate($data);
                $this-&amp;gt;view-&amp;gt;formulario = $form;
            }

        }
        else{
                // Imprime na view o formulario por default 
                // assim que entra na página do formulário.
                $this-&amp;gt;view-&amp;gt;formulario = $form;
        }

    }

...

}
&lt;/pre&gt;&lt;br /&gt;
E assim, nosso formulario esta praticamente completo. Só não está ainda por que, onde está escrito &#39;&amp;lt;codigo surpresa&amp;gt;&#39; podemos colocar dois tipos de códigos dependendo de nossos objetivos:&lt;br /&gt;
&lt;br /&gt;
1 - código para inserir os dados no banco de dados&lt;br /&gt;
2 - código para autenticação de um formulário de login&lt;br /&gt;
&lt;br /&gt;
Ou seja, o formulário feito até agora é geral o bastante pra usarmos tanto pra um formulario qualquer quanto para um formulario para fazer login no sistema.&lt;br /&gt;
&lt;br /&gt;
Por isso teremos a terceira parte do formulário em Zend - salvar os dados do formulário no banco de dados, e num outro tutorial iremos apreveitar o que aprendemos até aqui pra criar um sistema de login.&lt;br /&gt;
&lt;br /&gt;
Agora estamos prontos para a terceira parte de nossa série:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_6520.html&quot;&gt;Formule alguma coisa : Criando formulários em Zend Framework parte 3 :: Salvando dados enviados dos formulários&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;Referência: &lt;a href=&quot;http://framework.zend.com/manual/en/zend.form.html&quot;&gt;http://framework.zend.com/manual/en/zend.form.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/7065998794553049442/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_10.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7065998794553049442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7065998794553049442'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_10.html' title='Formule alguma coisa : Criando formulários em Zend Framework parte 2 :: Submetendo dados'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-911594486650155797</id><published>2011-06-10T14:04:00.000-07:00</published><updated>2011-10-18T18:18:38.382-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="criar"/><category scheme="http://www.blogger.com/atom/ns#" term="formulario"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Formule alguma coisa : Criando formulários em Zend Framework parte 1 :: Criando forms</title><content type='html'>Para criar um formulário no Zend Framework, abre um terminal, vá a pasta de seu projeto e digite&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ zf enable form

$ zf create form meuform&lt;/pre&gt;
&lt;br /&gt;
Vai ser criada um arquivo com a classe de criação do formulário&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;/* .../application/forms/Meuform.php */

class Form_Meuform extends Zend_Form{

    public function init(){

    }

}
&lt;/pre&gt;
&lt;br /&gt;
Coloque na ação &#39;init()&#39; o código de criação dos forms:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;$this-&amp;gt;setAction(&#39;minhaurl&#39;);

&lt;/pre&gt;
&lt;br /&gt;
para definir a ação do form, e&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;$this-&amp;gt;setMethod(&#39;meumetodo&#39;);
&lt;/pre&gt;
&lt;br /&gt;
para definir o método de envio (POST,GET,etc).&lt;br /&gt;
Agora, adicione um elemento de form ( text, button, submit, etc ):&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;$this-&amp;gt;addElement($arraydeconfiguracaodoelemento)
&lt;/pre&gt;
&lt;br /&gt;
Veja o manual do Zend para a configuração de cada elemento.&lt;br /&gt;
&lt;br /&gt;
Um exemplo de um formulário mínimo, com uma caixa de texto e um botão de submissão:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class Form_Meuform extends Zend_Form{

    public function init(){

        // Ação para a página de envio do form.
 $this-&amp;gt;setAction(&#39;inscricao&#39;);

        // Método de envio do form.
        $this-&amp;gt;setMethod(&#39;post&#39;);
        
        // Uma caixa de texto.
        $this-&amp;gt;addElement(&#39;text&#39;, &#39;nomedoform&#39;, 
         array(&#39;label&#39; =&amp;gt; &#39;Label do form&#39;)
  );

        // Botão de submissão.
        $this-&amp;gt;addElement(&#39;submit&#39;, &#39;submit&#39;, 
         array(&#39;label&#39;    =&amp;gt; &#39;Enviar&#39;)
  );

   }

}
&lt;/pre&gt;
&lt;br /&gt;
Criamos a ação &#39;minhaacao&#39; no controller &#39;Meucontroller.php&#39;, o que terá a view &#39;minhaacao.phtml&#39;.&lt;br /&gt;
Na ação &#39;minhaacao&#39; do controller, criamos o objeto de formulário&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;class MeucontrollerController extends Zend_Controller_Action{

...

      public function minhaacaoAction(){

             // Cria o objeto de formulario.
             $form = new Form_Meuform();
 
             // Envia para o view o formulario.
             $this-&amp;gt;view-&amp;gt;formulario = $form;

      }

...

}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
E no view &#39;application/views/scripts/meucontroller/minhaacao.phtml&#39; coloque&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php print $this-&amp;gt;formulario; ?&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Abra o navegador na página de seu site, e digite&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;http://meusite.com.br/meucontroller/minhaacao&lt;/pre&gt;
&lt;br /&gt;
E se não deu nada errado, seu formulário aparecerá na página.&lt;br /&gt;
&lt;br /&gt;
Veja agora a segunda parte da série&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando_10.html&quot;&gt;Formule alguma coisa : Criando formulários em Zend Framework parte 2 :: Submetendo dados&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;h2&gt;
Referências: &lt;/h2&gt;
&lt;br /&gt;
Zend Manual: &lt;a href=&quot;http://framework.zend.com/manual/en/zend.form.html&quot;&gt;Zend Form&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/911594486650155797/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/911594486650155797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/911594486650155797'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/06/formule-alguma-coisa-criando.html' title='Formule alguma coisa : Criando formulários em Zend Framework parte 1 :: Criando forms'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-6715759123043108928</id><published>2011-06-08T17:28:00.000-07:00</published><updated>2011-09-19T04:20:55.214-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="biblioteca"/><category scheme="http://www.blogger.com/atom/ns#" term="helpers"/><category scheme="http://www.blogger.com/atom/ns#" term="informatica"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Silêncio na biblioteca : Como e onde colocar suas próprias bibliotecas no Zend Framework</title><content type='html'>O Zend têm coisa pra caramba em sua biblioteca. Sempre que puder, usae-as, não fique reinventando a roda. Mas quando o Zend não têm o que precisamos, devemos criar nossas próprias bibliotecas.&lt;br /&gt;
&lt;br /&gt;
E surpreendentemente, fazer sua prórpria biblioteca no Zend é moleza.&lt;br /&gt;
&lt;br /&gt;
Apenas crie na pasta &#39;/library&#39; de sua aplicação uma pasta com suas próprias classes.&lt;br /&gt;
Pro exemplo, crio uma pasta &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/library/Minhabiblioteca/Minhasclasses1&lt;/pre&gt;&lt;br /&gt;
e &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/library/Minhabiblioteca/Minhasclasses2&lt;/pre&gt;&lt;br /&gt;
E sempre escreva a primeira letra de qualquer pasta em &#39;/library&#39; em maiúscula, esse é o padrão do Zend.&lt;br /&gt;
Vamos colocar uma classe em cada pasta&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/library/Minhabiblioteca/Minhasclasses1/Umaclasse1.php&lt;/pre&gt;&lt;br /&gt;
e &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/library/Minhabiblioteca/Minhasclasses2/Umaclasse2.php&lt;/pre&gt;&lt;br /&gt;
Agora, em cada classe, no cabeçalho de declaração de classes, você coloca&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Minhabiblioteca_Minhasclasses1_Umaclasse1 {

...

}
&lt;/pre&gt;&lt;br /&gt;
Percebeu o esquema ? Na declaração da classe, você coloca o nome das pastas, sempre com a primeira letra do nome em maiusculo, unidas por underline, e finaliznado com o nome da classe.&lt;br /&gt;
&lt;br /&gt;
Agora, no arquivo de configuração &#39;application.ini&#39; coloque a linha&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;autoloaderNamespaces[] = &quot;Minhabiblioteca&quot;&lt;/pre&gt;&lt;br /&gt;
para sua biblioteca ser adicionada ao PATH da aplicação.&lt;br /&gt;
&lt;br /&gt;
Crie seus métodos e objetos, e poderá usar em qualquer lugar do Zend, basta pra isso você chamar em qualquer local que você queira com &lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;$obj = new Minhabiblioteca_Minhasclasses1_Umaclasse1()
&lt;/pre&gt;&lt;br /&gt;
e estarão disponíveis seus métodos e objetos que você criou pra usar ali.&lt;br /&gt;
Você pode até mesmo extender alguma classe do Zend, por exemplo, Zend_Front_Controller&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot; &gt;class Minhabiblioteca_Minhasclasses1_Umaclasse1 extends Zend_Front_Controller {

...

}
&lt;/pre&gt;&lt;br /&gt;
e qualquer outra classe que você precisar usar do Zend.&lt;br /&gt;
&lt;br /&gt;
Acreditem, eu fiquei surpreso de não precisar declara nada no Bootstrap, no config ou no &#39;index.php&#39; pra fazer minha libs funcionarem no Zend. &lt;br /&gt;
&lt;br /&gt;
Espero que a felicidade agora bata na porta de vocês.&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;Fonte: &lt;a href=&quot;http://framework.zend.com/manual/1.11/en/performance.classloading.html&quot;&gt;http://framework.zend.com/manual/1.11/en/performance.classloading.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/6715759123043108928/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/06/plugando-no-zend-ele-nao-gosta-disso.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/6715759123043108928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/6715759123043108928'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/06/plugando-no-zend-ele-nao-gosta-disso.html' title='Silêncio na biblioteca : Como e onde colocar suas próprias bibliotecas no Zend Framework'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>São Paulo, Brasil</georss:featurename><georss:point>-23.5489433 -46.6388182</georss:point><georss:box>-23.8749538 -46.869311700000004 -23.222932800000002 -46.4083247</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1652202062659345410.post-7646170719603791208</id><published>2011-06-07T14:16:00.000-07:00</published><updated>2011-09-19T04:21:16.864-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="informatica"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="programação"/><category scheme="http://www.blogger.com/atom/ns#" term="zend"/><title type='text'>Framework o caramba ! Eu tô usando Zend !</title><content type='html'>Antes de mais nada, advirto que foi o estagiário quem escreveu o título.&lt;br /&gt;
Daqui em diante eu mesmo assumo.&lt;br /&gt;
&lt;br /&gt;
Pois bem, &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt; é SIM um framework.&lt;br /&gt;
&lt;br /&gt;
O que é um &lt;a href=&quot;http://pt.wikipedia.org/wiki/Framework&quot;&gt;framework&lt;/a&gt; ?&lt;br /&gt;
&lt;br /&gt;
Um framework é um conjunto de bibliotecas de uma certa linguagem de programação voltados a uma função específica.&lt;br /&gt;
Por exemplo, existem frameworks escritos em C para bancos, e como tais, possuem funções específicas para manipulação de transações bancárias e assim programas bancarios poderem ser feitos sem precisar reinventar a roda ( ou seja, criar do zero funções para manipular transações bancárias ). &lt;br /&gt;
&lt;br /&gt;
No caso do Zend, ele é um conjunto de bibliotecas para &lt;a href=&quot;http://www.php.net/&quot;&gt;PHP&lt;/a&gt; voltado para fazer sites.&lt;br /&gt;
Com Zend, é possível fazer sites dos mais simples, com algumas páginas estáticas, a até sistemas inteiros ( como os netbankings e e-commerces - magento é um deles feito com Zend ).&lt;br /&gt;
Se fossem feitos do zero, demoraria um bom tempo até você criar suas próprias bibliotecas, seus próprios esquemas de segurança, etc.&lt;br /&gt;
Além do mais, a vantagem de se usar um framework é a padronização. Com padronização entenda que um desenvolvedor usando um framework popilar, vai poder fazer um programa que outro programador - que também conhece o framework - poderá entender e assim continuar a desenvolver de forma mais rápida e eficiente também.&lt;br /&gt;
&lt;br /&gt;
Quer dizer, o uso de um framework não só ajuda individualmente, mas também em trabalho em grupo. Afinal , se cada um faz uma biblioteca diferente para o mesmo projeto, todo mundo vai ter de gastar um tempo tentando entender o que todo mundo fez, ao contrario da situação em que, se todo mundo aprender a usar o mesmo framework, isso não será mais problema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Existem muitos frameworks em PHP para sites por ai. Alguns pagos, outros de gratuitos.&lt;br /&gt;
Dos gratuitos ( que é a preferência da maioria, não sei porque ) temos esses &lt;a href=&quot;http://www.phpframeworks.com/&quot;&gt;daqui&lt;/a&gt;, dentre eles, temos o Zend.&lt;br /&gt;
&lt;br /&gt;
A preferência pelo Zend, na minha opinião, é que ele é desenvolvido pelo próprio grupo que mantêm o PHP, e ao longo das versões, vêm se tornando o padrão preferido de mercado. &lt;br /&gt;
A bem da verdade, o Zend inicialmente era um monstrengo complicado e pesado, mas nessa última versão ( v1.11 em 07/06/2011 ) está sendo muito prazeiroso usá-lo e a eficiencia está satisfatória - não sei o quanto, meus projetos ainda são pequenos pra perceber a diferença - no entanto, convido ao leitor a testar tantos frameworks puder para ver qual se adequa as suas nescessidades e gostos, tomando Zend como um opção, não como O framework definitivo.&lt;br /&gt;
&lt;br /&gt;
Este blog criei em primeira instância, para colocar o que aprendi/aprendo em Zend, podendo ser  considerado um &quot;querido diário&quot; de programação, pois tive a idéia de fazê-lo pelo tanto de tutoriais que existem por ai, mas muito poucos são fáceis ou intuitivos pra quem quer logo meter a mão na massa, e portanto, pretendo realizar postagens que sejam tão rápidos e práticos quanto possível, se não o for, é porque foi inevitável.&lt;br /&gt;
&lt;br /&gt;
Assim, agradecerei as críticas ( construtivas ) , opiniões e sugestões que os leitores porventura venham a fazer.&lt;br /&gt;
&lt;br /&gt;
Agora, se não vão continuar a ver meu blog, voltem ao trabalho, e boa programação.</content><link rel='replies' type='application/atom+xml' href='http://bardozend.blogspot.com/feeds/7646170719603791208/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://bardozend.blogspot.com/2011/06/framework-o-caramba-eu-to-usando-zend.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7646170719603791208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1652202062659345410/posts/default/7646170719603791208'/><link rel='alternate' type='text/html' href='http://bardozend.blogspot.com/2011/06/framework-o-caramba-eu-to-usando-zend.html' title='Framework o caramba ! Eu tô usando Zend !'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>