<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>iuttu &#187; zend framework</title> <atom:link href="http://www.iuttu.com/tag/zend-framework/feed/" rel="self" type="application/rss+xml" /><link>http://www.iuttu.com</link> <description>Desarrollo web</description> <lastBuildDate>Mon, 23 Jan 2012 16:52:04 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Uso de contextos en Zend Framework</title><link>http://www.iuttu.com/2009/01/contextos-ajax-zend-framework/</link> <comments>http://www.iuttu.com/2009/01/contextos-ajax-zend-framework/#comments</comments> <pubDate>Tue, 20 Jan 2009 13:18:49 +0000</pubDate> <dc:creator>iuttu</dc:creator> <category><![CDATA[javascript]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programación]]></category> <category><![CDATA[ajax]]></category> <category><![CDATA[php]]></category> <category><![CDATA[zend framework]]></category> <guid
isPermaLink="false">http://blog.iuttu.com/?p=135</guid> <description><![CDATA[En un proyecto web, habitualmente hacemos llamadas al mismo código pero necesitamos que los resultados se muestren de forma diferente. Zend Framework ofrece varios mecanismos para facilitar esta tarea. Uno de ellos son las vistas parciales (PartialView) que permiten separar una parte de la presentación y aislarlas del contexto. Esto nos permite reutilizar una porción [...]]]></description> <content:encoded><![CDATA[<p>En un proyecto web, habitualmente hacemos llamadas al mismo código pero necesitamos que los resultados se muestren de forma diferente. Zend Framework ofrece varios mecanismos para facilitar esta tarea.</p><p>Uno de ellos son las vistas parciales (<em>PartialView</em>) que permiten separar una parte de la presentación y aislarlas del contexto. Esto nos permite reutilizar una porción de html y definir un contexto concreto para cada llamada.</p><p>El contexto es otro mecanismo que también nos permite ejecutar un código discriminando la salida. El siguiente ejemplo utiliza <em>AjaxContext</em>, un helper que hereda de <em>ContextSwitch</em> y que se especializa en llamadas Ajax.</p><p>Para empezar, tendremos que inicializar el contexto:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> ControladorController <span style="color: #000000; font-weight: bold;">extends</span> Zeb_Controller_Action<span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$ajaxContext</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span> <span style="color: #339933;">-&gt;</span> _helper <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">getHelper</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'AjaxContext'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$ajaxContext</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">addActionContext</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'html'</span><span style="color: #009900;">&#41;</span>
                 <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">initContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    parent<span style="color: #339933;">::</span><span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> indexAction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #339933;">...</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p><em>addActionContext()</em> nos permite añadir un nuevo contexto a un action (en este caso <em>index</em>). El primer parámetro es el nombre del action y el segundo el tipo de contexto. <em>initContext()</em> inicializa el contexto.</p><p>Sólo con estas lineas ya habremos definido e inicializado un nuevo contexto. Toda las llamadas al action <em>index</em> se trataran de la forma habitual, excepto aquellas que cambien de contexto. ¿Y cómo cambiamos de contexto? El siguiente ejemplo de código JavaScript utiliza Mootools para realizar una llamada Ajax activando el contexto:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td
class="code"><pre class="javascript" style="font-family:monospace;">...
<span style="color: #003366; font-weight: bold;">var</span> myRequest <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Request.<span style="color: #660066;">HTML</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  url <span style="color: #339933;">:</span> requestUrl<span style="color: #339933;">,</span>
  update <span style="color: #339933;">:</span> <span style="color: #3366CC;">'content-div'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'format'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'html'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
...</pre></td></tr></table></div><p>Donde <em>requestUrl</em> será la url de nuestro action (Controlador &#8211; index) y <em>content-div</em> la capa que se actualizará con el resultado de la llamada. El parámetro <em>format</em> es el que activará el cambio de contexto en nuestro action.</p><p>Al realizar esta llamada nuestro action ejecutará el código e irá a buscar una view con el formato de nombre <em>/[controlador]/[action].ajax.phtml</em> en lugar del habitual <em>/[controlador]/[action].phtml. Además desactivará los layouts por defecto, siendo la situación ideal para una llamada de este tipo.</p><p>Ya está todo preparado. A partir de ahora las llamadas a /controlador/index se gestionarán como siempre, pero cuando realicemos una llamada desde Ajax podremos mostrar sólo una vista parcial. Esta solución es perfecta para mostrar una ficha: al realizar la llamada /controlador/index mostramos la ficha con cabecera, menú, pie, etc.. y al llamar por Ajax cambiamos de vista y sólo mostramos el contenido del elemento para incluirlo en otra vista.</p><p>Unas consideraciones finales:</p><ul><li><em>AjaxContext</em> añade un tercer contexto <em>html</em> a los dos (<em>json</em> y <em>xml</em>) ofrecidos por <em>ContextSwitch</em>, aunque podemos crear nuestros propios contextos.</li><li>Una llamada con el parámetro <em>format</em> no cambiará al contexto <em>AjaxContext</em> si no se ha realizado mediante XmlHttpRequest (que es lo que nos interesa)</li><li>Zend proporciona una serie de métodos para afinar nuestro código y que nos permitirán añadir headers, serializar respuestas Json, activar layouts, etc&#8230; en función del contexto</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.iuttu.com/2009/01/contextos-ajax-zend-framework/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Urls multiidioma en Zend Framework</title><link>http://www.iuttu.com/2008/12/urls-multiidioma-zend-framework/</link> <comments>http://www.iuttu.com/2008/12/urls-multiidioma-zend-framework/#comments</comments> <pubDate>Tue, 09 Dec 2008 14:05:45 +0000</pubDate> <dc:creator>iuttu</dc:creator> <category><![CDATA[General]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programación]]></category> <category><![CDATA[internacionalización]]></category> <category><![CDATA[zend framework]]></category> <guid
isPermaLink="false">http://blog.iuttu.com/?p=77</guid> <description><![CDATA[Hoy en día es poco habitual realizar un desarrollo web en un único idioma. Para controlar el idioma a mostrar en nuestra página solemos utilizar parámetros en la url que permitan enlazarnos externamente en el idioma deseado. Si utilizas Zend Framework, la definición de routers te permitirá manejar este problema sin dificultades. Como ejemplo, trabajaremos [...]]]></description> <content:encoded><![CDATA[<p>Hoy en día es poco habitual realizar un desarrollo web en un único idioma. Para controlar el idioma a mostrar en nuestra página solemos utilizar parámetros en la url que permitan enlazarnos externamente en el idioma deseado.</p><p>Si utilizas Zend Framework, la definición de routers te permitirá manejar este problema sin dificultades. Como ejemplo, trabajaremos con un router que enlaza con la página principal, pero se puede replicar el ejemplo a los routers que desees o a un formato genérico tipo <code>:module/:controller/:action</code></p><p>Nuestro router tendría esta pinta:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$route</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Controller_Router_Route<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">':language'</span><span style="color: #339933;">,</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$router</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addRoute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$route</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>En el init de nuestro action añadiremos estas líneas:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$language</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span> <span style="color: #339933;">-&gt;</span> _getParam<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'language'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$adapter</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Translate<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'gettext'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'../languages/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$language</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.mo'</span><span style="color: #339933;">,</span><span style="color: #000088;">$language</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$adapter</span> <span style="color: #339933;">-&gt;</span> <span style="color: #990000;">setLocale</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$language</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Zend_Form<span style="color: #339933;">::</span><span style="color: #004000;">setDefaultTranslator</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$adapter</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Y listo. A partir de este momento si el parámetro indicado como language es &#8220;es&#8221; o &#8220;en&#8221; cargaremos el fichero de idioma indicado. Controlando el valor de $language podemos confirmar que el parámetro es uno de nuestros idiomas definidos (comprobando que forma parte de un array de idiomas, por ejemplo) o forzar un valor por defecto cuando el valor de $language es vacío.</p> ]]></content:encoded> <wfw:commentRss>http://www.iuttu.com/2008/12/urls-multiidioma-zend-framework/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 7/18 queries in 0.023 seconds using disk: basic

Served from: www.iuttu.com @ 2012-02-06 15:00:39 -->
