<?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"
	>

<channel>
	<title>Aikon &#187; CakePHP</title>
	<atom:link href="http://aikon.com.ve/category/desarrollo-web/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>http://aikon.com.ve</link>
	<description>Otro Blog de WordPress</description>
	<pubDate>Mon, 07 Jul 2008 12:21:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Ósmosis2</title>
		<link>http://aikon.com.ve/osmosis2/</link>
		<comments>http://aikon.com.ve/osmosis2/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 02:38:48 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[ósmosis]]></category>

		<category><![CDATA[e-learning]]></category>

		<category><![CDATA[lms]]></category>

		<guid isPermaLink="false">http://aikon.com.ve/?p=194</guid>
		<description><![CDATA[DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MANEJO DEL APRENDIZAJE A DISTANCIA: ÓSMOSIS 2, el proyecto de grado que hemos presentado ante la Universidad Simón Bolívar. Aprobado, con mención honorífica.]]></description>
			<content:encoded><![CDATA[<p><a title="Ana Gabriela Díaz" href="http://anagaby0204.blogspot.com/">Lo</a> <a title="José Lorenzo" href="http://joselorenzo.com.ve/">hemos</a> <a title="Joaquín Windmüller" href="http://aikon.com.ve/">logrado</a>, luego de 10 meses de trabajo hemos defendido nuestra proyecto de  grado: &#8220;DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MANEJO DEL APRENDIZAJE A DISTANCIA: ÓSMOSIS 2&#8243;, hemos recibido mención honorífica lo cual no es nada malo. Pero más importante que eso es que en verdad estoy orgulloso del trabajo logrado.</p>
<p><img class="alignnone size-medium wp-image-197 blend" style="display:block;margin:auto;" title="Osmosis (Logo)" src="/uploads/2008/07/osmosis-300x93.png" alt="" width="300" height="93" /></p>
<p>Ósmosis 2 es un learning management system (LMS) completamente modular desarrollado sobre CakePHP. Ya lo hemos registrado en Ohloh y esperamos implantarlo por primera vez en la Universidad Simón Bolívar de modo que podamos empezar a recibir feedback sobre su funcionamiento.</p>
<p>Según Ohloh, Ósmosis tiene un valor de 1 Millon de dólares. Es bastante cómico porque como siempre la hemos &#8220;mi bebé&#8221;, ahora la podremos llamar nuestro &#8220;1 Million Dollar Baby&#8221; <img src='http://aikon.com.ve/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><img class="alignnone size-medium wp-image-195" title="1 Million $ Baby: Ósmosis" src="/uploads/2008/07/osmosis1mdollar-300x238.png" alt="Según Ohloh, ósmosis vale 1 millon de dólares" width="300" height="238" /><br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
<li><a href="http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/" title="Gráficos en CakePHP con Open Flash Chart">Gráficos en CakePHP con Open Flash Chart</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/osmosis2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Links en gráficos de OpenFlashChart</title>
		<link>http://aikon.com.ve/links-en-graficos-de-openflashchart/</link>
		<comments>http://aikon.com.ve/links-en-graficos-de-openflashchart/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 02:40:36 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakeOpenFlashChart]]></category>

		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[cakephp-graficos-flash]]></category>

		<category><![CDATA[graficos]]></category>

		<guid isPermaLink="false">http://aikon.com.ve/?p=190</guid>
		<description><![CDATA[Implementando links al helper de Open Flash Chart con un pequeño detalle: no pueden usarse comas en los enlaces debido a un bug en la clase PHP de OpenFlashChart.]]></description>
			<content:encoded><![CDATA[<p>Nueva actualización en el <a title="Helper CakePHP para gráficos" href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/">helper de CakePHP</a>. El soporte para enlaces en los datos del gráficos tiene un sólo detalle: bug heredado de la clase PHP de OpenFlashChart como lo <a title="Links Implementados" href="http://trac2.assembla.com/cakeopenflashchart/ticket/5#comment:2">indiqué en el mensaje de commit</a>.</p>
<p>En pocas palabras, los enlaces no pueden contener comas ya que la clase que ofrece OpenFlashChart hace locuras con el arreglo de enlaces convirtiéndolo a string ¿separado por qué? adivinaron bién: comas.</p>
<p>El <a title="Ejemplos del Helper CakeOpenFlashChart" href="http://aikon.com.ve/flashchart/">ejemplo 1</a> está actualizado con esta nueva capacidad.</p>
<p>Eso me deja sin tickets abiertos, sin embargo aún hay espacio para mejorara. Si encuentras un bug o deseas una nueva funcionalidad <a href="http://trac2.assembla.com/cakeopenflashchart/newticket">registra un ticket</a> o deja un comentario.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
<li><a href="http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/" title="Gráficos en CakePHP con Open Flash Chart">Gráficos en CakePHP con Open Flash Chart</a></li>
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/links-en-graficos-de-openflashchart/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Actualizaciones al Helper FlashChart</title>
		<link>http://aikon.com.ve/flashchart-helper-actualizado/</link>
		<comments>http://aikon.com.ve/flashchart-helper-actualizado/#comments</comments>
		<pubDate>Sat, 31 May 2008 04:50:31 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakeOpenFlashChart]]></category>

		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[cakephp-graficos-flash]]></category>

		<category><![CDATA[graficos]]></category>

		<guid isPermaLink="false">http://aikon.com.ve/?p=187</guid>
		<description><![CDATA[<img class="alignnone size-thumbnail wp-image-188" title="Diff" src="/uploads/2008/05/diff-150x150.png" alt="Diff view of a commit" width="150" height="150" />Nuevas actualizaciones en el Helper de Cake: <a href="http://aikon.com.ve/flashchart/">OpenFlashChart</a>. Se cierran unos tickets y se abren otros :)]]></description>
			<content:encoded><![CDATA[<p>Hoy he cerrado un par de tickets: <a href="http://trac2.assembla.com/cakeopenflashchart/ticket/1">#1</a> y <a href="http://trac2.assembla.com/cakeopenflashchart/ticket/3">#3</a>.</p>
<p>Lo más interesante de esto es que ahora los rangos del eje y se calculan automáticamente.</p>
<p>También he actualizado los <a title="Flash Chart, ejemplos" href="http://aikon.com.ve/flashchart/">gráficos de ejemplo</a> para que muestren el código fuente usado para cada uno, el cual actualizaré próximamente para hacer uso de las nuevas capacidades implementadas en #3.</p>
<p><img class="textflow alignnone size-full wp-image-189" title="Demo con código" src="/uploads/2008/05/demos.png" alt="EL gráfico resultante con el código fuente" width="480" height="211" /></p>
<p>Es bueno saber que hay gente usando este pedacito de código: ya tengo 2 tickets más por cerrar.</p>
<p>Saludos<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
<li><a href="http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/" title="Gráficos en CakePHP con Open Flash Chart">Gráficos en CakePHP con Open Flash Chart</a></li>
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/flashchart-helper-actualizado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Flash Chart Helper: gráficos al estilo Cake</title>
		<link>http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/</link>
		<comments>http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 03:34:13 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakeOpenFlashChart]]></category>

		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[cakephp-graficos-flash]]></category>

		<category><![CDATA[Desarrollo Web]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/?p=165</guid>
		<description><![CDATA[<img title="CakePHP Logo" src="http://www.aikon.com.ve/uploads/2008/04/cake-logo.png" alt="CakePHP Logo" width="180" height="180" />[Este es un artículo que he escrito en inglés para el Bakery de CakePHP y que traduzco acá para la comunidad en español] Open Flash Chart es una solución interesante para dibujar gráficos a partir de datos en tu aplicación. Este artículo introduce un Helper de CakePHP para hacer la labor de dibujar gráficos más sencilla.
]]></description>
			<content:encoded><![CDATA[<p>Nota: si deseas recibir actualizaciones sobre el <a title="Cake OpenFlashChart Helper" href="/category/desarrollo-web/cakephp/cake-openflashchart-cakephp/">Helper de CakePHP para Open Flash Chart</a> suscríbete al <a href="http://aikon.com.ve/category/desarrollo-web/cakephp/cake-openflashchart-cakephp/feed">feed de la categoría</a>.</p>
<p><a href="http://teethgrinder.co.uk/open-flash-chart/">Open Flash Chart</a> es una solución interesante para dibujar gráficos a partir de datos en tu aplicación. Este artículo introduce un Helper de CakePHP para hacer la labor de dibujar gráficos más sencilla.</p>
<h2>Requisitos</h2>
<p>Para hacer uso de este helper, primero debes descargar el archivo zip de Open Flash Chart desde <a href="http://teethgrinder.co.uk/open-flash-chart/download.php">http://teethgrinder.co.uk/open-flash-chart/download.php</a>.</p>
<p>Dentro hay dos archivos necesarios para usar este helper:</p>
<ul>
<li><strong>open-flash-chart.swf</strong> coloca este archivo en el directorio <strong>[app]/webroot/</strong></li>
<li><strong>php-ofc-library/open-flash-chart.php</strong> coloca este archivo en el directorio <strong>[app]/vendors</strong></li>
</ul>
<h2>El Helper:</h2>
<p>Para obtener el helper descargalo del repositorio subversion:</p>
<pre>svn co <a href="http://svn2.assembla.com/svn/cakeopenflashchart/trunk/flash_chart.php">http://svn2.assembla.com/svn/cakeopenflashchart/trunk/flash_chart.php</a></pre>
<p>Si no usas svn puedes descargarlo, manualmente, de ese url también</p>
<h2>Uso</h2>
<p>Ahora, para usar este helper haz como con cualquier otro:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re0">$uses</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;FlashChart&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Los siguientes ejemplos están todos colocados en un archivo de vista <strong>[app]/views/pages/charts.ctp</strong> (por lo tanto debes modificar PagesController para que use el Helper) y generan datos al azar (pero usar una base de datos es igual de fácil).</p>
<h3>Ejemplo 1 - Gráficos de Barra</h3>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">begin<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">250</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Title</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">title</span><span class="br0">&#40;</span><span class="st0">&#8216;Example 1 - Bars: Hits per Day&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Configure Grid style and legends</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">configureGrid</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;x_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8217;step&#8217;</span> =&gt; <span class="nu0">1</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;Day&#8217;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;y_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;#Hits&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Prepare some random data (10 points)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$random_hits</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>; <span class="re0">$i</span> &lt; <span class="nu0">10</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$random_hits</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Register each data set with its information.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$data</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Hits&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;color&#8217;</span> =&gt; <span class="st0">&#8216;#afe342&#8242;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;font_size&#8217;</span> =&gt; <span class="nu0">11</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;data&#8217;</span> =&gt; <span class="re0">$random_hits</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;graph_style&#8217;</span> =&gt; <span class="st0">&#8216;bar&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">setData</span><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Set Ranges in the chart</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;y&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;x&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Show the graph</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$flashChart</span>-&gt;<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Este ejemplo genera un gráfico de barras sencillo con los datos generados al azar en un ciclo. Para generar otro gráfico en la misma vista es importante reiniciar los datos del helper invocando el método FlashChartHelper::begin</p>
<p><strong>Nota:</strong> cambia &#8216;graph_style&#8217; =&gt; &#8216;bar&#8217; a alguno de los siguientes para ver todos los tipos de gráfico de barra disponibles</p>
<ul>
<li>&#8216;graph_style&#8217; =&gt; &#8216;bar_sketch&#8217;</li>
<li>&#8216;graph_style&#8217; =&gt; &#8216;bar_glass&#8217;</li>
<li>&#8216;graph_style&#8217; =&gt; &#8216;bar_filled&#8217;</li>
<li>&#8216;graph_style&#8217; =&gt; &#8216;bar_3D&#8217;</li>
<li>&#8216;graph_style&#8217; =&gt; &#8216;bar_fade&#8217;</li>
</ul>
<h3>Ejemplo 2 - Gráficos de Líneas</h3>
<p>Para graficar líneas en vez de barras, el único cambio necesario al ejemplo anterior es sustituir &#8216;graph_style&#8217; =&gt; &#8216;bar&#8217; por alguno de los siguientes</p>
<ul>
<li>&#8216;graph_style&#8217; =&gt; &#8216;line&#8217;</li>
<li>&#8216;graph_style&#8217; =&gt; &#8216;line_hollow&#8217;</li>
<li>&#8216;graph_style&#8217; =&gt; &#8216;line_dot&#8217;</li>
</ul>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">begin<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">250</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Title</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">title</span><span class="br0">&#40;</span><span class="st0">&#8216;Example 2 - Lines: Hits per Day&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Configure Grid style and legends</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">configureGrid</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;x_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8217;step&#8217;</span> =&gt; <span class="nu0">1</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;Day&#8217;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;y_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;#Hits&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Prepare some random data (10 points)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$random_hits</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>; <span class="re0">$i</span> &lt; <span class="nu0">10</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$random_hits</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Register each data set with its information.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$data</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Hits&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;color&#8217;</span> =&gt; <span class="st0">&#8216;#00aa42&#8242;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;font_size&#8217;</span> =&gt; <span class="nu0">11</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;data&#8217;</span> =&gt; <span class="re0">$random_hits</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;graph_style&#8217;</span> =&gt; <span class="st0">&#8216;lines&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">setData</span><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Set Ranges in the chart</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;y&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;x&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Show the graph</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$flashChart</span>-&gt;<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<h3>Ejemplo 3 - Gráficos de Puntos</h3>
<p>Este tipo de gráfico usa una sintaxis diferente para definir los datos a graficar. Requiere que los datos se especifiquen en puntos (pares x,y), aquí está el ejemplo:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">begin<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">250</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Title</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">title</span><span class="br0">&#40;</span><span class="st0">&#8216;Example 3 - Scatter: Some Random Points&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Configure Grid style and legends</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">configureGrid</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;x_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8217;step&#8217;</span> =&gt; <span class="nu0">1</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;Day&#8217;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;y_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;#Hits&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Prepare some random data (10 points)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$random_points</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>; <span class="re0">$i</span> &lt; <span class="nu0">10</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Each point is represented as a pair (x,y)</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re0">$random_points</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;x&#8217;</span> =&gt; <span class="re0">$i</span>, <span class="st0">&#8216;y&#8217;</span> =&gt; <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">100</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Register each data set with its information.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$data</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Random Points&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;color&#8217;</span> =&gt; <span class="st0">&#8216;#00aa42&#8242;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;font_size&#8217;</span> =&gt; <span class="nu0">11</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;data&#8217;</span> =&gt; <span class="re0">$random_points</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;graph_style&#8217;</span> =&gt; <span class="st0">&#8217;scatter&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setData</span><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Set Ranges in the chart</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;y&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;x&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Show the graph</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$flashChart</span>-&gt;<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<h3>Ejemplo 4 - Gráficos de Torta</h3>
<p>Este tipo de gráfico también usa una sintaxis distinta, aquí está el ejemplo:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">begin<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">250</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">title</span><span class="br0">&#40;</span><span class="st0">&#8216;Example 4 - Pie Chart: My imaginary Browser Stats&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$browser_data</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Firefox&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;value&#8217;</span> =&gt; <span class="nu0">30</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Opera&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;value&#8217;</span> =&gt; <span class="nu0">7</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="st0">&#8216;IE&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;value&#8217;</span> =&gt; <span class="nu0">38</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Other&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;value&#8217;</span> =&gt; <span class="nu0">25</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">pie</span><span class="br0">&#40;</span><span class="re0">$browser_data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$flashChart</span>-&gt;<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p><strong>Nota:</strong> El Helper de Flash Chart selecciona automáticamente los colores, para cada sección del gráfico, si no los estableces explícitamente.</p>
<h3>Ejemplo 5 - Gráficos Mixtos</h3>
<p>Open Flash Chart permite varios conjuntos de datos dentro de un mismo gráfico, puedes mezclar gráficos de barras, líneas y puntos, aquí hay un ejemplo que extienden al primer ejemplo presentado:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">begin<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">250</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Title</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">title</span><span class="br0">&#40;</span><span class="st0">&#8216;Example 5 - Mixed: Hits per Day vs. # Visits&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Configure Grid style and legends</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$flashChart</span>-&gt;<span class="me1">configureGrid</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;x_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8217;step&#8217;</span> =&gt; <span class="nu0">1</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;Day&#8217;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;y_axis&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span> =&gt; <span class="st0">&#8216;#Hits&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Prepare some random data (10 points)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$visits</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$random_hits2</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>; <span class="re0">$i</span> &lt; <span class="nu0">10</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re0">$visits</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">50</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$random_hits2</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">50</span>,<span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Register each data set with its information.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$data</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="st0">&#8216;Hits&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;color&#8217;</span> =&gt; <span class="st0">&#8216;#afe342&#8242;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;font_size&#8217;</span> =&gt; <span class="nu0">11</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;data&#8217;</span> =&gt; <span class="re0">$random_hits2</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;graph_style&#8217;</span> =&gt; <span class="st0">&#8216;line_dot&#8217;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;Visits&#8217;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;color&#8217;</span> =&gt; <span class="st0">&#8216;#324aef&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;font_size&#8217;</span> =&gt; <span class="nu0">11</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;data&#8217;</span> =&gt; <span class="re0">$visits</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;graph_style&#8217;</span> =&gt; <span class="st0">&#8216;bar&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setData</span><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// Set Ranges in the chart</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;y&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">100</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$flashChart</span>-&gt;<span class="me1">setRange</span><span class="br0">&#40;</span><span class="st0">&#8216;x&#8217;</span>, <span class="nu0">0</span>, <span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Show the graph</span></div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$flashChart</span>-&gt;<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<h2>Resultados</h2>
<p>Los resultados de estos ejemplos pueden encontrarlos en <a href="http://aikon.com.ve/flashchart/">http://aikon.com.ve/flashchart/</a></p>
<h2>¿Qué Falta?</h2>
<p>En estos momentos, hay dos tipos de gráfico que Open Flash Chart ofrece y que el Helper no implementa:</p>
<ul>
<li>High Low Close (??): <a href="http://teethgrinder.co.uk/open-flash-chart/gallery-hlc.php">http://teethgrinder.co.uk/open-flash-chart/gallery-hlc.php</a></li>
<li>Candle (gráficos de caja): <a href="http://teethgrinder.co.uk/open-flash-chart/gallery-candle.php">http://teethgrinder.co.uk/open-flash-chart/gallery-candle.php</a></li>
</ul>
<h2>Algunas posibles mejoras:</h2>
<ul>
<li>Escribir funciones de más alto nivel que encapsulen muchas de las líneas usadas en los ejemplos.</li>
<li>Selección automática de los rangos de los ejes.</li>
</ul>
<h2>Si algo falta</h2>
<p>Reportalo: <a href="http://trac2.assembla.com/cakeopenflashchart/newticket">http://trac2.assembla.com/cakeopenflashchart/newticket</a><br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/" title="Gráficos en CakePHP con Open Flash Chart">Gráficos en CakePHP con Open Flash Chart</a></li>
<li><a href="http://aikon.com.ve/solucion-un-core-de-cakephp-para-unirlas-a-todas-las-aplicaciones/" title="Solución: Un core de CakePHP para unirlas a todas (las aplicaciones)">Solución: Un core de CakePHP para unirlas a todas (las aplicaciones)</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gráficos en CakePHP con Open Flash Chart</title>
		<link>http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/</link>
		<comments>http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 07:00:30 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakeOpenFlashChart]]></category>

		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[cakephp-graficos-flash]]></category>

		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/2008/03/20/graficos-en-cakephp-con-open-flash-chart/</guid>
		<description><![CDATA[Open Flash Chart es una opción interesante para generar gráficos llamativos con flash. Permite generar gráficos de barras (en múltiples estilos), lineas, puntos, tortas, etc. lo cual puede ser muy útil en algunas aplicaciones web.
Para poner a funcionar Open Flash Chart y CakePHP he creado un helper
que permite en cualquier vista generar los gráficos que [...]]]></description>
			<content:encoded><![CDATA[<p>Open Flash Chart es una opción interesante para generar gráficos llamativos con flash. Permite generar gráficos de barras (en múltiples estilos), lineas, puntos, tortas, etc. lo cual puede ser muy útil en algunas aplicaciones web.<img style="display: block; margin: NaNpx;" src="http://www.aikon.com.ve/uploads/2008/03/picture-1.png" alt="CakePHP Open Flash Chart" width="405" height="232" /></p>
<p>Para poner a funcionar Open Flash Chart y CakePHP he creado un helper<br />
<span id="more-101"></span>que permite en cualquier vista generar los gráficos que sean necesarios.El Helper se encuentra en un repositorio svn, puedes obtenerlo haciendo:<br />
<span style="font-family: Courier New;">svn co http://svn2.assembla.com/svn/cakeopenflashchart/trunk/flash_chart.php</span></p>
<p>Si no usas svn, descargalo desde ese mismo url.</p>
<p>Para ponerlo a funcionar debese seguir los siguientes pasos:</p>
<ul>
<li>Descarga Open Flash Chart: http://teethgrinder.co.uk/open-flash-chart/download.php</li>
<li>Coloca en la carpeta <span style="font-weight: bold; font-family: Courier New;">[APP]/webroot</span> el archivo <span style="font-weight: bold; font-family: Courier New;">open-flash-chart.swf</span></li>
<li>Coloca en la carpeta <span style="font-weight: bold; font-family: Courier New;">[APP]/vendors</span> el archivo <span style="font-weight: bold; font-family: Courier New;">open-flash-chart.php</span></li>
</ul>
<p>Listo, eso es todo. Ejemplos de como usarlo los publicaré <a href="http://trac2.assembla.com/cakeopenflashchart/wiki">acá</a>.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/graficos-en-cakephp-con-open-flash-chart/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Solución: Un core de CakePHP para unirlas a todas (las aplicaciones)</title>
		<link>http://aikon.com.ve/solucion-un-core-de-cakephp-para-unirlas-a-todas-las-aplicaciones/</link>
		<comments>http://aikon.com.ve/solucion-un-core-de-cakephp-para-unirlas-a-todas-las-aplicaciones/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 17:51:24 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[Desarrollo Web]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/2007/09/22/solucion-un-core-de-cakephp-para-unirlas-a-todas-las-aplicaciones/</guid>
		<description><![CDATA[Ya tengo en mi disco duro alrededor de 10 proyectos de cakephp, algunos son viejos y usan CakePHP 1.1, pero para los más nuevos uso la versión 1.2 (aclaro que no me ha ido mal. Para aquellos que aún dudan cual versión usar, tengo entendido que está apunto de entrar en fase beta. Especialmente viendo [...]]]></description>
			<content:encoded><![CDATA[<p>Ya tengo en mi disco duro alrededor de 10 proyectos de cakephp, algunos son viejos y usan CakePHP 1.1, pero para los más nuevos uso la versión 1.2 (aclaro que no me ha ido mal. Para aquellos que aún dudan cual versión usar, tengo entendido que está apunto de entrar en fase beta. Especialmente viendo el <a title="CakePHP 1.2.x Roadmap" href="https://trac.cakephp.org/milestone/1.2.x.x">Roadmap de CakePHP1.2.</a>)</p>
<p>En fin, luego de la promoción del framework, quiero comentarles cómo hago para evitar tener el core de cake repetido para cada aplicación que tengo. Creé un directorio en el cual descargo la última versión directamente desde el svn de cake: https://trac.cakephp.org/.</p>
<p>Ese es el core que deben usar todas las aplicaciones que correne en mi pc. Para ello tengo tengo 2:</p>
<h2>Opción1: modificar las rutas dentro de la aplicación</h2>
<p>En el archivo <strong>app/webroot/index.php</strong> es necesario modificar la línea 56 que dice:</p>
<p>[php]<br />
define(&#8217;CAKE_CORE_INCLUDE_PATH&#8217;, ROOT);<br />
[/php]</p>
<p>Y decirle a la aplicación dónde está el core de cake (por ejemplo, si ROOT es /home/aikon/sitios y el core de cake está en /home/aikon/sitios/cake1.2.x)  entonces esa línea será:</p>
<p>[php]<br />
define(&#8217;CAKE_CORE_INCLUDE_PATH&#8217;, ROOT . DS . &#8216;cake1.2.x&#8217; . DS);<br />
[/php]</p>
<p>Así el gran beneficio es que obviamente nuestra aplicación sabrá dónde está el core y no tendrás que duplicarlo. Si estás usando la suite de pruebas de CakePHP vas a tener que hacer algo parecido en el archivo <strong>app/webroot/tests.php</strong></p>
<p>El problema de esta solución es que al cambiar las rutas, tendrás algunos problemas cuando trabajan varias personas en el proyecto (con ponerse de acuerdo en la ubicación del core bastará). Pero, si desean mantener las rutas que propone cake por defecto entonces sigue leyendo <img src='http://aikon.com.ve/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Opción 2: enlaces simbólicos</h2>
<p>La segunda opción, que acabo de descubrir hace poco, es usar enlaces simbólicos (suaves, creo) en el sistema de archivos. Digamos que, nuevamente la carpeta de nuestra aplicación es <strong>/home/aikon/sitios/miapp/app </strong>(esta es la carpeta <em>app</em> que trae cake adentro por defecto)<strong> </strong>y el core de cake (descargado por svn) lo tenemos en <strong>/home/aikon/cake1.2</strong></p>
<p>Lo que debemos hacer para que todo funcione de maravilla es lo siguiente:</p>
<p>[code]<br />
cd /home/aikon/sitios/miapp<br />
ln -s /home/aikon/cake1.2/* .<br />
[/code]</p>
<p>¡Eureka! El gran beneficio de esto es que no es necesario modificar archivo alguno (lo cual ayuda a disminuir la cantidad de problemas al momento de trabajar en grupos). No lo he comprobado, pero seguramente esta solución requiere que apache este configurado para segur SymLinks.</p>
<p>De cualquier forma, es importante recordar que el <a title="Manual: Instalación de CakePHP" href="http://cakephp-es.org/doku.php?id=instalacion_de_cakephp">manual de CakePHP</a> recomienda mantener el core de cake fuera del DocumentRoot cuando se va a poner en producción el sitio. Lo cual se puede lograr de distintas formas y cualquiera de estas dos puede servir.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
<li><a href="http://aikon.com.ve/validacion-en-cakephp-12/" title="Validación en CakePHP 1.2">Validación en CakePHP 1.2</a></li>
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/solucion-un-core-de-cakephp-para-unirlas-a-todas-las-aplicaciones/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Configurando la nueva consola de CakePHP1.2 en PHPEclipse</title>
		<link>http://aikon.com.ve/configurando-la-nueva-consola-de-cakephp12-en-phpeclipse/</link>
		<comments>http://aikon.com.ve/configurando-la-nueva-consola-de-cakephp12-en-phpeclipse/#comments</comments>
		<pubDate>Sat, 23 Jun 2007 14:54:27 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[consola]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[phpeclipse]]></category>

		<category><![CDATA[subclipse]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/2007/06/23/configurando-la-nueva-consola-de-cakephp12-en-phpeclipse/</guid>
		<description><![CDATA[Ya antes había escrito una forma de configurar la consola de cakePHP1.2 en PHPEclipse.  El problema con ese metodo es que no era extensible y genérico para todos los proyectos PHP que puedes tener configurado en Eclipse. Por ello luego de jugar un poco más con las opciones de Eclipse llegué a una solución [...]]]></description>
			<content:encoded><![CDATA[<p>Ya antes había escrito una forma de<a title="Configurar la consola de CakePHP1.2 (de la forma incorrecta)" href="http://www.aikon.com.ve/2007/06/01/configurando-la-nueva-consola-de-cakephp12-en-phpeclipse-bakephp/"> configurar la consola de cakePHP1.2 en PHPEclipse</a>.  El problema con ese metodo es que no era extensible y genérico para todos los proyectos PHP que puedes tener configurado en Eclipse. Por ello luego de jugar un poco más con las opciones de Eclipse llegué a una solución muy satisfactoria. Asumiendo lo siguiente:</p>
<ul>
<li> Configuramos el plugin de subversion de Eclipse (Subclipse) para que descargue el trunk de cake1.2 (https://svn.cakephp.org/repo/trunk/cake/1.2.x.x)  en <strong>/home/joaquin/sitios/cakephp1.2.x/</strong><br />
De esta manera con hacer un update de subversion actualizo el core de todos mis proyectos.</li>
<li>El directorio de uno de los proyectos (en eclipse: File-&gt;New-&gt;PHP Project) desarrollados con cakePHP va a estar en <strong>/home/joaquin/sitios/ejemplo/ </strong>(esta carpeta la crea Eclipse, no pongas nada ahí aún)<strong><br />
</strong></li>
</ul>
<p>Ahora procedamos a editar la herramienta externa en Eclipse:</p>
<p>En el menú <strong>Run-&gt;External Tools-&gt;External Tools</strong> creamos una nueva herramienta (o modificamos la del bake explicado en el articulo anterior).</p>
<ul>
<li><strong>Name</strong>: cakePHP Console</li>
<li>En <strong>Location</strong>: /home/joaquin/sitios/cake1.2.x/cake/console/cake</li>
<li>En <strong>Working Directory</strong>: /home/joaquin/sitios</li>
<li>En<strong> Arguments</strong>: ${string_prompt} -app /home/joaquin/sitios${project_path}</li>
</ul>
<p>Eso es todo, con eso hemos configurado la herramienta externa de Eclipse para que use la consola de cakePHP. Si usas windows, Location debería apuntar a bake.bat y muy probablemente las rutas debas especificarlas empezando con nombre de unidad y usar \ en vez de /</p>
<p>Al abrir el proyecto ejemplo ubicado en  <strong>/home/joaquin/sitios/ejemplo/ </strong>y correr &#8220;cakePHP Console&#8221; (en el menú Run-&gt;External Tools) te lanzará un cuadro donde te pedirá que introduzcas un texto. La cónsola original de cakePHP te da las siguientes opciones:</p>
<p>[code]Available Shells:</p>
<p>vendors/shells/:<br />
- none</p>
<p>cake/console/libs/:<br />
acl<br />
extract<br />
api<br />
console<br />
bake[/code]</p>
<p>Agregar scripts a la consola no es el tema de este artículo, pero supongo que con ponerlos en la carpeta /home/joaquin/sitios/cake1.2.x/vendors/shells/ estarán disponibles para todos tus proyectos.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/configurando-la-nueva-consola-de-cakephp12-en-phpeclipse/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paginación de resultados en Cake1.2</title>
		<link>http://aikon.com.ve/paginacion-de-resultados-en-cake12/</link>
		<comments>http://aikon.com.ve/paginacion-de-resultados-en-cake12/#comments</comments>
		<pubDate>Wed, 30 May 2007 19:23:33 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[paginacion]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/2007/05/30/paginacion-de-resultados-en-cake12/</guid>
		<description><![CDATA[Muchas veces cuando trabajamos con un conjunto de datos muy grande, es recomendable y positivo mostrarle al usuario un listado más pequeño de datos y el resto repartirlos en páginas adicionales. Esta técnica se llama paginación de resultados.
Hacer esto en CakePHP1.2 es, cómo casi todo en este framework, muy fácil. El siguiente ejemplo será basado [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces cuando trabajamos con un conjunto de datos muy grande, es recomendable y positivo mostrarle al usuario un listado más pequeño de datos y el resto repartirlos en páginas adicionales. Esta técnica se llama paginación de resultados.</p>
<p>Hacer esto en CakePHP1.2 es, cómo casi todo en este framework, muy fácil. El siguiente ejemplo será basado en el mismo modelo presentado para el artículo sobre validación en CakePHP 1.2.</p>
<p>Empecemos por llenar la base de datos con información con la cual hacer pruebas:</p>
<p>[sql]</p>
<p>INSERT INTO users VALUES<br />
(NULL, &#8216;alias1&#8242;, &#8216;correo1&#8242;, &#8216;nombre1&#8242;, &#8217;s1&#8242;, &#8216;pass1&#8242;),<br />
(NULL, &#8216;alias2&#8242;, &#8216;correo2&#8242;, &#8216;nombre2&#8242;, &#8217;s2&#8242;, &#8216;pass2&#8242;),<br />
(NULL, &#8216;alias3&#8242;, &#8216;correo3&#8242;, &#8216;nombre3&#8242;, &#8217;s3&#8242;, &#8216;pass3&#8242;),<br />
(NULL, &#8216;alias4&#8242;, &#8216;correo4&#8242;, &#8216;nombre4&#8242;, &#8217;s4&#8242;, &#8216;pass4&#8242;),<br />
(NULL, &#8216;alias5&#8242;, &#8216;correo5&#8242;, &#8216;nombre5&#8242;, &#8217;s5&#8242;, &#8216;pass5&#8242;),<br />
(NULL, &#8216;alias6&#8242;, &#8216;correo6&#8242;, &#8216;nombre6&#8242;, &#8217;s6&#8242;, &#8216;pass6&#8242;),<br />
(NULL, &#8216;alias7&#8242;, &#8216;correo7&#8242;, &#8216;nombre7&#8242;, &#8217;s7&#8242;, &#8216;pass7&#8242;),<br />
(NULL, &#8216;alias8&#8242;, &#8216;correo8&#8242;, &#8216;nombre8&#8242;, &#8217;s8&#8242;, &#8216;pass8&#8242;),<br />
(NULL, &#8216;alias9&#8242;, &#8216;correo9&#8242;, &#8216;nombre9&#8242;, &#8217;s9&#8242;, &#8216;pass9&#8242;),<br />
(NULL, &#8216;alias10&#8242;, &#8216;correo10&#8242;, &#8216;nombre10&#8242;, &#8217;s10&#8242;, &#8216;pass10&#8242;),<br />
(NULL, &#8216;alias11&#8242;, &#8216;correo11&#8242;, &#8216;nombre11&#8242;, &#8217;s11&#8242;, &#8216;pass11&#8242;),<br />
(NULL, &#8216;alias12&#8242;, &#8216;correo12&#8242;, &#8216;nombre12&#8242;, &#8217;s12&#8242;, &#8216;pass12&#8242;),<br />
(NULL, &#8216;alias13&#8242;, &#8216;correo13&#8242;, &#8216;nombre13&#8242;, &#8217;s13&#8242;, &#8216;pass13&#8242;),<br />
(NULL, &#8216;alias14&#8242;, &#8216;correo14&#8242;, &#8216;nombre14&#8242;, &#8217;s14&#8242;, &#8216;pass14&#8242;),<br />
(NULL, &#8216;alias15&#8242;, &#8216;correo15&#8242;, &#8216;nombre15&#8242;, &#8217;s15&#8242;, &#8216;pass15&#8242;),<br />
(NULL, &#8216;alias16&#8242;, &#8216;correo16&#8242;, &#8216;nombre16&#8242;, &#8217;s16&#8242;, &#8216;pass16&#8242;),<br />
(NULL, &#8216;alias17&#8242;, &#8216;correo17&#8242;, &#8216;nombre17&#8242;, &#8217;s17&#8242;, &#8216;pass17&#8242;),<br />
(NULL, &#8216;alias18&#8242;, &#8216;correo18&#8242;, &#8216;nombre18&#8242;, &#8217;s18&#8242;, &#8216;pass18&#8242;),<br />
(NULL, &#8216;alias19&#8242;, &#8216;correo19&#8242;, &#8216;nombre19&#8242;, &#8217;s19&#8242;, &#8216;pass19&#8242;),<br />
(NULL, &#8216;alias20&#8242;, &#8216;correo20&#8242;, &#8216;nombre20&#8242;, &#8217;s20&#8242;, &#8216;pass20&#8242;);</p>
<p>[/sql]</p>
<p>Ya tenemos 20 usuarios en la tabla (users) para mostrar. El modelo usado sigue siendo igual que el presentado en el artículo anterior. Para mosatrar el listado de usuarios usamos la función index como sigue:</p>
<p>[php]<br />
function index() {<br />
$this-&gt;set(&#8217;users&#8217;, $this-&gt;paginate());<br />
}<br />
[/php]</p>
<p>Así de sencillo, sin embargo es necesario mostrar la información en la vista:</p>
<p>[php]</p>
<div class="users">
<h2>List Users</h2>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th>&lt; ?php echo $paginator-&gt;sort(&#8217;id&#8217;);?&gt;</th>
<th>&lt; ?php echo $paginator-&gt;sort(&#8217;alias&#8217;);?&gt;</th>
<th>&lt; ?php echo $paginator-&gt;sort(&#8217;email&#8217;);?&gt;</th>
<th>&lt; ?php echo $paginator-&gt;sort(&#8217;name&#8217;);?&gt;</th>
<th>&lt; ?php echo $paginator-&gt;sort(&#8217;salt&#8217;);?&gt;</th>
<th>&lt; ?php echo $paginator-&gt;sort(&#8217;password&#8217;);?&gt;</th>
<th>Actions</th>
</tr>
<p>&lt; ?php foreach ($users as $user): ?&gt;</p>
<tr>
<td>&lt; ?php echo $user['User']['id']; ?&gt;</td>
<td>&lt; ?php echo $user['User']['alias']; ?&gt;</td>
<td>&lt; ?php echo $user['User']['email']; ?&gt;</td>
<td>&lt; ?php echo $user['User']['name']; ?&gt;</td>
<td>&lt; ?php echo $user['User']['salt']; ?&gt;</td>
<td>&lt; ?php echo $user['User']['password']; ?&gt;</td>
<td class="actions">&lt; ?php echo $html-&gt;link(&#8217;View&#8217;, array(&#8217;action&#8217;=&gt;&#8217;view&#8217;, $user['User']['id'])); ?&gt;<br />
&lt; ?php echo $html-&gt;link(&#8217;Edit&#8217;, array(&#8217;action&#8217;=&gt;&#8217;edit&#8217;, $user['User']['id'])); ?&gt;<br />
&lt; ?php echo $html-&gt;link(&#8217;Delete&#8217;, array(&#8217;action&#8217;=&gt;&#8217;delete&#8217;, $user['User']['id']), null, &#8216;Are you sure you want to delete #&#8217; . $user['User']['id']); ?&gt;</td>
</tr>
<p>&lt; ?php endforeach; ?&gt;</p>
</tbody>
</table>
</div>
<div class="paging">&lt; ?php echo $paginator-&gt;prev(&#8217;&lt; &lt; previous&#8217;, array(), null, array(&#8217;class&#8217;=&gt;&#8217;disabled&#8217;));?&gt;<br />
|<br />
&lt; ?php echo $paginator-&gt;next(&#8217;next &gt;&gt;&#8217;, array(), null, array(&#8217;class&#8217;=&gt;&#8217;disabled&#8217;));?&gt;</div>
<div class="actions">
<ul>
<li>&lt; ?php echo $html-&gt;link(&#8217;New User&#8217;, array(&#8217;action&#8217;=&gt;&#8217;add&#8217;)); ?&gt;</li>
</ul>
</div>
<p>[/php]</p>
<p>Para mostrar los resultados paginados se usa el helper paginator, en las líneas:<br />
[php]</p>
<p>&lt; ?php echo $paginator-&gt;sort(&#8217;id&#8217;);?&gt; &lt; ?php echo $paginator-&gt;sort(&#8217;alias&#8217;);?&gt; &lt; ?php echo $paginator-&gt;sort(&#8217;email&#8217;);?&gt; &lt; ?php echo $paginator-&gt;sort(&#8217;name&#8217;);?&gt; &lt; ?php echo $paginator-&gt;sort(&#8217;salt&#8217;);?&gt; &lt; ?php echo $paginator-&gt;sort(&#8217;password&#8217;);?&gt; Actions</p>
<p>[/php]</p>
<p>Se muestran las cabeceras de la tabla con enlaces que permiten ordenar los resultados.</p>
<p>Por otro lado, la paginación se hace con las líneas:</p>
<p>[php]<br />
&lt; ?php echo $paginator-&gt;prev(&#8217;&lt; &lt; previous&#8217;, array(), null, array(&#8217;class&#8217;=&gt;&#8217;disabled&#8217;));?&gt;<br />
|<br />
&lt; ?php echo $paginator-&gt;next(&#8217;next &gt;&gt;&#8217;, array(), null, array(&#8217;class&#8217;=&gt;&#8217;disabled&#8217;));?&gt;<br />
[/php]</p>
<p>El comportamiento por defecto del paginador muestra 20 resultados por página. Si quisieramos disminuir el número de resultados por página es necesario cambiar una variable <var>$paginate</var> en el controlador. Por ejemplo, para mostrar 5 resultados por página:</p>
<p>[php]<br />
class UsersController extends AppController {<br />
&#8230;<br />
var $paginate = array(&#8217;limit&#8217; =&gt; 5);<br />
&#8230;<br />
}<br />
[/php]</p>
<p>La función paginate usada en controlador permite pasarle varios parámetros los cuales aún no han sido documentados. El primero permite parsarle un objeto (un arreglo - posiblemente el resultado de un query sql, un string - el modelo a usar), el segundo parámetro permite pasar las condiciones que deben cumplir los resultados (como el arreglo conditions en la función findAll), el último parámetro parece ser el que permite definir las condiciones de la búsqueda.</p>
<h4>Resumen</h4>
<p>El nuevo método de paginación que trae cake1.2 por defecto permite repartir los resultados de una búsqueda en varias páginas de manera muy fácil. Este ha sido un ejemplo básico de cómo hacerlo.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/paginacion-de-resultados-en-cake12/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Validación en CakePHP 1.2</title>
		<link>http://aikon.com.ve/validacion-en-cakephp-12/</link>
		<comments>http://aikon.com.ve/validacion-en-cakephp-12/#comments</comments>
		<pubDate>Sun, 20 May 2007 23:21:31 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[Desarrollo Web]]></category>

		<category><![CDATA[validación]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/2007/05/20/validacion-en-cakephp-12/</guid>
		<description><![CDATA[Este fin de semana empecé a jugar con la versión alpha de cakePHP (1.2.x.x). Esta trae consigo una clase que se encarga de la validación de los datos (la labor más importante del desarrollo de software) que nos llegan desde el navegador de los usuarios.
Esta nueva clase viene a sustituir las soluciones que habían surgido [...]]]></description>
			<content:encoded><![CDATA[<p>Este fin de semana empecé a jugar con la versión alpha de cakePHP (1.2.x.x). Esta trae consigo una clase que se encarga de la validación de los datos (la labor más importante del desarrollo de software) que nos llegan desde el navegador de los usuarios.</p>
<p>Esta nueva clase viene a sustituir las soluciones que habían surgido para suplir la deficiencia que tenía en esta área cakePHP 1.1, las reglas de validación de cakePHP se definen en cada modelo. Acá estaré dando un ejemplo de cómo implementé la validación sobre un modelo Usuario.<span id="more-69"></span></p>
<h4>La base de datos</h4>
<p>La base de datos se puede crear con el siguiente script:<br />
[sql]<br />
CREATE TABLE `users` (<br />
`id` int(10) unsigned NOT NULL auto_increment,<br />
`alias` varchar(255) NOT NULL COMMENT &#8216;Login&#8217;,<br />
`email` varchar(255) NOT NULL,<br />
`name` varchar(255) NOT NULL,<br />
`salt` char(15) NOT NULL,<br />
`password` varchar(40) NOT NULL,<br />
PRIMARY KEY (`id`),<br />
UNIQUE KEY `email` (`email`),<br />
UNIQUE KEY `alias` (`alias`)<br />
)<br />
[/sql]</p>
<p>Tenemos:</p>
<ul>
<li><strong>id:</strong> clave primaria autonumérica.</li>
<li><strong>alias:</strong> nombre de usuario.</li>
<li><strong>email:</strong> correo electrónico.</li>
<li><strong>name:</strong> nombre del usuario.</li>
<li><strong>salt:</strong> una sal que se usa para aumentar la seguridad del sistema (<a href="http://phpsec.org/articles/2005/password-hashing.html">http://phpsec.org/articles/2005/password-hashing.html</a>)</li>
<li><strong>password:</strong> la clave del usuario.</li>
</ul>
<h4>El Modelo</h4>
<p>Ahora pasamos a crear el modelo user.php, he comentado un poco el código para que se explique lo que hace:<br />
[php]<br />
class User extends AppModel {</p>
<p>var $name = &#8216;User&#8217;;</p>
<p>//The Associations below have been created with all possible keys, those that are not needed can be removed<br />
var $hasAndBelongsToMany = array (<br />
&#8216;Feed&#8217; =&gt; array (<br />
&#8216;className&#8217; =&gt; &#8216;Feed&#8217;,<br />
&#8216;joinTable&#8217; =&gt; &#8216;users_feeds&#8217;,<br />
&#8216;foreignKey&#8217; =&gt; &#8216;user_id&#8217;,<br />
&#8216;associationForeignKey&#8217; =&gt; &#8216;feed_id&#8217;,<br />
&#8216;conditions&#8217; =&gt; &#8221;,<br />
&#8216;fields&#8217; =&gt; &#8221;,<br />
&#8216;order&#8217; =&gt; &#8221;,<br />
&#8216;limit&#8217; =&gt; &#8221;,<br />
&#8216;offset&#8217; =&gt; &#8221;,<br />
&#8216;unique&#8217; =&gt; &#8221;,<br />
&#8216;finderQuery&#8217; =&gt; &#8221;,<br />
&#8216;deleteQuery&#8217; =&gt; &#8221;,<br />
&#8216;insertQuery&#8217; =&gt; &#8221;<br />
)<br />
);</p>
<p>function passwordConfirm() {<br />
if ($this-&gt;data["User"]["password"] === $this-&gt;data["User"]["password_confirm"]) {<br />
return true;<br />
}<br />
return false;<br />
}</p>
<p>function isUnique() {<br />
$args = func_get_args();<br />
$field = $args[1];<br />
$exists = $this-&gt;hasAny(&#8221;$field=&#8217;&#8221;.$this-&gt;data["User"][$field].&#8221;&#8216;&#8221;);<br />
return $exists===false;<br />
}</p>
<p>var $validate = array (<br />
&#8216;alias&#8217; =&gt; array (<br />
&#8216;required&#8217; =&gt; array (<br />
&#8216;rule&#8217; =&gt; array(&#8217;minLength&#8217;, 1)<br />
),<br />
&#8216;unique&#8217; =&gt; array(<br />
&#8216;rule&#8217; =&gt; array(&#8217;isUnique&#8217;, &#8216;alias&#8217;)<br />
)<br />
),<br />
&#8216;name&#8217; =&gt; array (<br />
&#8216;required&#8217; =&gt; array (<br />
&#8216;rule&#8217; =&gt; array(&#8217;minLength&#8217;, 1)<br />
)<br />
),<br />
&#8216;email&#8217; =&gt; array (<br />
&#8216;valid&#8217; =&gt; array(<br />
&#8216;rule&#8217; =&gt; array(&#8217;email&#8217;)<br />
),<br />
&#8216;required&#8217; =&gt; array (<br />
&#8216;rule&#8217; =&gt; array(&#8217;minLength&#8217;, 1)<br />
),<br />
&#8216;unique&#8217; =&gt; array(<br />
&#8216;rule&#8217; =&gt; array(&#8217;isUnique&#8217;, &#8216;email&#8217;)<br />
)<br />
)<br />
,<br />
&#8216;password&#8217; =&gt; array(<br />
&#8216;required&#8217; =&gt; array (<br />
&#8216;rule&#8217; =&gt; array(&#8217;minLength&#8217;, 1)<br />
)<br />
),<br />
&#8216;password_confirm&#8217; =&gt; array (<br />
&#8216;required&#8217; =&gt; array (<br />
&#8216;rule&#8217; =&gt; array(&#8217;minLength&#8217;, 1)<br />
),<br />
&#8216;confirm&#8217; =&gt; array (<br />
&#8216;rule&#8217; =&gt; array (&#8217;passwordConfirm&#8217;)<br />
),<br />
)<br />
);</p>
<p>}<br />
[/php]</p>
<p>Las reglas minLength (usada acá para que el campo no sea dejado vacío) y email son métodos por defecto de cake 1.2.</p>
<p>Esta clase aún no está completada por lo que fue necesario definir métodos para la validación de otros parámetros, estos son:</p>
<ul>
<li><strong>passwordConfirm:</strong> permite chequear que al crear un nuevo usuario clave y su confirmación coincidan.<br />
Se encarga de revisar que el campo password sea igual al campo password_confirm.</li>
<li><strong>isUnique:</strong> chequea que el campo no se encuentre repetido en la base de datos. Este método recibe un parámetro que es el campo que se desea estudiar.</li>
</ul>
<h4>El Controlador</h4>
<p>En el controlador implementaremos sólo el método de agregar:<br />
[php]<br />
function add() {<br />
if(!empty($this-&gt;data)) {<br />
$this-&gt;cleanUpFields();<br />
$this-&gt;User-&gt;create();<br />
$this-&gt;User-&gt;set($this-&gt;data);<br />
if($this-&gt;User-&gt;validates()) {<br />
$salt = substr(md5(uniqid(rand(), true)), 0, 15);<br />
$this-&gt;data["User"]["salt"] = $salt;<br />
$this-&gt;data["User"]["password"] =<br />
$this-&gt;data["User"]["password_confirm"] =<br />
sha1($salt.$this-&gt;data["User"]["password"]);</p>
<p>$this-&gt;User-&gt;save($this-&gt;data);</p>
<p>$this-&gt;Session-&gt;setFlash(&#8217;The User has been saved&#8217;);<br />
$this-&gt;redirect(array(&#8217;action&#8217;=&gt;&#8217;index&#8217;), null, true);<br />
} else {<br />
$this-&gt;Session-&gt;setFlash(&#8217;The User could not be saved. Please, try again.&#8217;);<br />
}<br />
unset($this-&gt;data["User"]["password"]);<br />
unset($this-&gt;data["User"]["password_confirm"]);<br />
}<br />
/** Possible recommended feeds =) */<br />
$feeds = $this-&gt;User-&gt;Feed-&gt;generateList();<br />
$this-&gt;set(compact(&#8217;feeds&#8217;));<br />
}<br />
[/php]</p>
<p>En el método, referente a la validación la única línea de interés es esta:<br />
[php]if($this-&gt;User-&gt;validates()) {[/php]<br />
Lo demás se encarga de encriptar y ponerle la sal al password.</p>
<h4>La vista</h4>
<p>CakePHP 1.2 tiene un nuevo FormHelper que se encarga de dibujar los formularios, sus campos y los mensajes de error:<br />
[php]</p>
<h2>New User</h2>
<p>&lt; ?php echo $form-&gt;create(&#8217;User&#8217;);?&gt;<br />
&lt; ?php<br />
echo $form-&gt;input(&#8217;name&#8217;, array (<br />
&#8216;error&#8217; =&gt; array (<br />
&#8216;required&#8217; =&gt; Configure :: read(&#8217;User.name_required&#8217;<br />
)<br />
)));<br />
?&gt;<br />
&lt; ?php<br />
echo $form-&gt;input(&#8217;email&#8217;, array (<br />
&#8216;error&#8217; =&gt; array (<br />
&#8216;required&#8217; =&gt; Configure :: read(&#8217;User.email_required&#8217;),<br />
&#8216;valid&#8217; =&gt; Configure :: read(&#8217;User.email_valid&#8217;),<br />
&#8216;unique&#8217; =&gt; Configure::read(&#8217;User.email_unique&#8217;)<br />
)<br />
));<br />
?&gt;<br />
&lt; ?php<br />
echo $form-&gt;input(&#8217;password&#8217;, array(<br />
&#8216;error&#8217; =&gt; array(<br />
&#8216;required&#8217; =&gt; Configure::read(&#8221;User.password_required&#8221;)<br />
)<br />
));<br />
?&gt;<br />
&lt; ?php<br />
echo $form-&gt;input(&#8217;password_confirm&#8217;,<br />
array(<br />
&#8220;type&#8221; =&gt; &#8220;password&#8221;,<br />
&#8220;error&#8221; =&gt; array(<br />
&#8216;required&#8217; =&gt; Configure::read(&#8217;User.password_confirm_required&#8217;),<br />
&#8216;confirm&#8217; =&gt; Configure::read(&#8217;User.password_confirm&#8217;)<br />
)<br />
));<br />
?&gt;<br />
&lt; ?php echo $form-&gt;submit(&#8217;Add&#8217;);?&gt;</p>
<p>[/php]</p>
<p>El segundo parámetro de $form-&gt;input se encarga de indicarle a CakePHP qué mensaje de error debe imprimir en cada caso.</p>
<h4>Configure::read</h4>
<p>En la vista en vez de colocar los mensajes de error directamente he optado por colocarlos en un archivo de configuración <strong>app/config/messages.php</strong> para manejarlos de una manera más centralizada.</p>
<p>La estructura de este archivo es la siguiente:<br />
[php]<br />
$config['User.name_required'] = &#8216;You have to write your Name.&#8217;;<br />
$config['User.alias_required'] = &#8216;The alias is required.&#8217;;<br />
$config['User.alias_unique'] = &#8216;This alias is already taken, try another one.&#8217;;<br />
$config['User.email_required'] = &#8216;You have to write your Email.&#8217;;<br />
$config['User.email_valid'] = &#8220;The email you set doesn&#8217;t have the right format.&#8221;;<br />
$config['User.email_unique'] = &#8220;The email you set  is allready registered.&#8221;;<br />
$config['User.password_required'] = &#8220;You have to write your password.&#8221;;<br />
$config['User.password_confirm_required'] = &#8220;Please confirm you password.&#8221;;<br />
$config['User.password_confirm'] = &#8220;The password and it&#8217;s confirmation don&#8217;t match.&#8221;;<br />
[/php]</p>
<p>Lo cual se parece mucho a los ResourceBundle de Java. Para cargar estos datos es necesario colocar en el controlador (o en el app_controller.php):<br />
[php]<br />
function beforeRender() {<br />
Configure :: load(&#8217;messages&#8217;);<br />
}<br />
[/php]</p>
<h4>Posibles problemas</h4>
<p>Puede que esta no sea la manera recomendada para la creación de métodos adicionales para la validación, existe en la clase de validación una función llamada userDefined que debería encargarse de hacer la llamada a funciones definidas por el desarrollador pasando los parámetros de manera correcta. Luego de varios intentos teminé encontrando el método que expuse aquí.</p>
<h4>Otras capacidades de la clase validation</h4>
<p>Esta clase tiene otros métodos de validación:</p>
<ul>
<li><strong>alphaNumeric:</strong> chequea que el campo sea alfanumérico.</li>
<li><strong>between:</strong> chequea que el valor del campo se encuentre entre un mínimo y un máximo (incluidos)</li>
<li><strong>blank:</strong> chequea que el campo haya sido deajado en banco o sea sólo caracteres en blanco (espacio, tab, etc).</li>
<li><strong>cc:</strong> chequea formatos de tarjeta de crédito de varias marcas (Amex, Via, Maestro, etc).</li>
<li><strong>comparison:</strong> compara dos números</li>
<li><strong>custom:</strong> permite especificar una expresión regular.</li>
<li><strong>date:</strong> revisa que un texto tenga un formato de fecha correcto</li>
<li><strong>decimal:</strong> revisa que el un texto represente un número decimal</li>
<li><strong>email:</strong> revisa que un texto sea un correo electrónico correcto.</li>
<li><strong>ip:</strong> detecta direcciones IPv4</li>
<li><strong>minLength y maxLength:</strong> revisan que la longitud del texto cumpla una longitud mínima y máxima respectivamente.</li>
<li><strong>money:</strong> parece detectar un texto que representa una cantidad monetaria.</li>
<li><strong>multiple y number:</strong> no están implementadas aún.</li>
<li><strong>numeric:</strong> simplemete llama a la función de php is_numeric</li>
<li><strong>phone:</strong> número telefónico, al parecer tendrá soporte para distintos países (por ahora sólo estados unidos).</li>
<li><strong>postal:</strong> código postal, también tendrá soporte para códigos de otros países (por ahora sólo estados unidos, canadá y reino unido).</li>
<li><strong>nns:</strong> número del seguro social.</li>
<li><strong>url:</strong> chequea en busca de una dirección URL, con distintos protocolos.</li>
</ul>
<h4>Resumen</h4>
<p>La clase que permite automatizar la validación en CakePHP 1.2 es muy poderosa comparandola con la que se usaba CakePHP 1.1 (que sólo tenía 4 métodos), ofreciando una metodología simple y extensible para definir nuevas reglas dependiendo de los requerimientos de cada aplicación. Es importante recordar que esto es un trabajo en curso, la versión actual es <strong>1.2.0.5137alpha</strong> y aún la clase no está terminada (mucho menos documentada) pero lo que hay hasta ahora es muy usable y prometedor.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
<li><a href="http://aikon.com.ve/solucion-un-core-de-cakephp-para-unirlas-a-todas-las-aplicaciones/" title="Solución: Un core de CakePHP para unirlas a todas (las aplicaciones)">Solución: Un core de CakePHP para unirlas a todas (las aplicaciones)</a></li>
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/validacion-en-cakephp-12/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP en español</title>
		<link>http://aikon.com.ve/cakephp-en-espanol/</link>
		<comments>http://aikon.com.ve/cakephp-en-espanol/#comments</comments>
		<pubDate>Sun, 20 May 2007 19:09:49 +0000</pubDate>
		<dc:creator>Joaquín Windmüller</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[canal_irc]]></category>

		<category><![CDATA[comunidad]]></category>

		<category><![CDATA[documentación]]></category>

		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.aikon.com.ve/2007/05/20/cakephp-en-espanol/</guid>
		<description><![CDATA[CakePHP es un framework de desarrollo para PHP. Lo vengo usando desde hace un tiempo y hoy un amigo ha creado un canal IRC para empezar a unir a la comunidad CakePHP hispanohablante. Si están empezando a usar CakePHP pueden unirse al canal y hacer sus preguntas, comentarios o simplemente conversar con gente con intereses [...]]]></description>
			<content:encoded><![CDATA[<p><a title="CakePHP" href="http://cakephp.org">CakePHP</a> es un framework de desarrollo para PHP. Lo vengo usando desde hace un tiempo y hoy un amigo ha creado un canal IRC para empezar a unir a la comunidad CakePHP hispanohablante. Si están empezando a usar CakePHP pueden unirse al canal y hacer sus preguntas, comentarios o simplemente conversar con gente con intereses parecidos.</p>
<p>El canal es <strong>#cakephp.es</strong> y está hospedado en irc.freenode.net (al igual que su hermano mayor #cakephp). Otro punto de encuentro entre los usuarios de cakePHP es el googlegroup <a title="Grupo Google de CakePHP en español" href="http://groups.google.com/group/CakePHP-es">cakePHP-es</a>.<br />
<h3>Entradas relacionadas</h3>
<ul class="related_post">
<li><a href="http://aikon.com.ve/osmosis2/" title="Ósmosis2">Ósmosis2</a></li>
<li><a href="http://aikon.com.ve/links-en-graficos-de-openflashchart/" title="Links en gráficos de OpenFlashChart">Links en gráficos de OpenFlashChart</a></li>
<li><a href="http://aikon.com.ve/flashchart-helper-actualizado/" title="Actualizaciones al Helper FlashChart">Actualizaciones al Helper FlashChart</a></li>
<li><a href="http://aikon.com.ve/open-flash-chart-helper-graficos-al-estilo-cake/" title="Open Flash Chart Helper: gráficos al estilo Cake">Open Flash Chart Helper: gráficos al estilo Cake</a></li>
</ul>
<p>Post from: <a href="http://aikon.com.ve">Aikon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://aikon.com.ve/cakephp-en-espanol/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
