<?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>Vladzur&#039;s Blog &#187; CakePHP</title>
	<atom:link href="http://vladzur.sangrederosas.cl/tag/cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://vladzur.sangrederosas.cl</link>
	<description>Sobre PHP, Ubuntu, CakePHP y otras cosas</description>
	<lastBuildDate>Mon, 26 Jul 2010 19:06:54 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Beanstalk con CakePHP sobre Debian</title>
		<link>http://vladzur.sangrederosas.cl/2010/07/13/beanstalk-con-cakephp-sobre-debian/</link>
		<comments>http://vladzur.sangrederosas.cl/2010/07/13/beanstalk-con-cakephp-sobre-debian/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 19:01:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://vladzur.sangrederosas.cl/?p=476</guid>
		<description><![CDATA[Beanstalk es un software que permite poner tareas en cola, esto puede ser muy útil a la hora de realizar procesos que requieren mucho tiempo de ejecución y que pueden deteriorar la experiencia del usuario. Al poner los procesos en cola, nuestra aplicación puede seguir su curso normal mientras se ejecutan las tareas encoladas en [...]]]></description>
			<content:encoded><![CDATA[<p>Beanstalk es un software que permite poner tareas en cola, esto puede ser muy útil a la hora de realizar procesos que requieren mucho tiempo de ejecución y que pueden deteriorar la experiencia del usuario.</p>
<p>Al poner los procesos en cola, nuestra aplicación puede seguir su curso normal mientras se ejecutan las tareas encoladas en segundo plano, sin que el usuario lo note.</p>
<p>Para poder instalarlo en Debian o Ubuntu, debemos descargar la fuente y descomprimirla:<br />
<code><br />
apt-get install libevent-1.4-2 libevent-dev<br />
wget http://xph.us/dist/beanstalkd/beanstalkd-1.4.6.tar.gz<br />
tar xzfv beanstalkd-1.4.6.tar.gz<br />
</code><br />
Y se ejecuta:<br />
<code><br />
beanstalkd -d -l 0.0.0.0 -p 11300<br />
</code><br />
Esto causa que beanstalkd inicie en modo demonio, escuchando todas las direcciones en el puerto 11300.</p>
<p>La utilización de esta herramienta con CakePHP está muy bien <a href="http://developinginthedark.com/posts/beanstalk-queuing-in-cakephp">explicada </a>.</p>
<p>Con mi propia experiencia puedo aportar algunas cosas:<br />
Enterrar procesos fallidos:</p>
<p>Cuando encolamos un proceso y este falla, podemos eliminarlo definitivamente o enterrarlo, para que luego pueda volver a ser ejecutado por beanstalk. Este método se llama &#8220;buri&#8221; y se usa más o menos asi:</p>
<p>En un shell de CakePHP (1.3):<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li></li><li><span style="color: #000000; font-weight: bold;">&lt;?php</span></li><li><span style="color: #000000; font-weight: bold;">class</span> EnviarMailShell <span style="color: #000000; font-weight: bold;">extends</span> Shell</li><li><span style="color: #009900;">&#123;</span></li><li>	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$uses</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Queue.Job'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$tubes</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'enviar_mail'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>	<span style="color: #000000; font-weight: bold;">function</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></li><li>	<span style="color: #009900;">&#123;</span></li><li>		App<span style="color: #339933;">::</span><span style="color: #004000;">import</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Correo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li>			<span style="color: #000088;">$job</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Job</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">reserve</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tube'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tubes</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>			<span style="color: #000088;">$correo</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Correo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$correo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">EnviarCorreo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$job</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Job'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id_usuario'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></li><li>				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Job</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">delete</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">out</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Se ha enviado el correo exitosamente'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>			<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span></li><li>				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Job</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bury</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//En caso de falla, lo enterramos!</span></li><li>			<span style="color: #009900;">&#125;</span></li><li>		<span style="color: #009900;">&#125;</span></li><li>	<span style="color: #009900;">&#125;</span></li><li><span style="color: #009900;">&#125;</span></li><li><span style="color: #000000; font-weight: bold;">?&gt;</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Volvemos a encolarlo con Kick:<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li></li><li>ClassRegistry<span style="color: #339933;">::</span><span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Queue.Job'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">kick</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tube'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'enviar_mail'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Espero que les sirva.</p>
<p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p><p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fbeanstalk-con-cakephp-sobre-debian%2F&amp;linkname=Beanstalk%20con%20CakePHP%20sobre%20Debian" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://vladzur.sangrederosas.cl/2010/07/13/beanstalk-con-cakephp-sobre-debian/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jQuery y CakePHP, ahora bien afiatados</title>
		<link>http://vladzur.sangrederosas.cl/2010/07/13/jquery-y-cakephp-ahora-bien-afiatados/</link>
		<comments>http://vladzur.sangrederosas.cl/2010/07/13/jquery-y-cakephp-ahora-bien-afiatados/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 04:15:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://vladzur.sangrederosas.cl/?p=485</guid>
		<description><![CDATA[En la nueva versión de CakePHP 1.3, es posible dejar de usar prototype y cambiarse a jQuery gracias a que cake permite seleccionar que motor de javascript vanos a usar, gracias al JsHelper var $helpers = array('Js' => array('Jquery')); Por defecto los scripts están en una caché, por lo que deben ser escrito al final [...]]]></description>
			<content:encoded><![CDATA[<p>En la nueva versión de CakePHP 1.3, es posible dejar de usar prototype y cambiarse a jQuery gracias a que cake permite seleccionar que motor de javascript vanos a usar, gracias al JsHelper<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="'php'"><div class="devcodeoverflow"><ol><li>var $helpers = array('Js' => array('Jquery'));</li></ol></div></pre><!--END_DEVFMTCODE--><br />
Por defecto los scripts están en una caché, por lo que deben ser escrito al final de la página:<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="'php'"><div class="devcodeoverflow"><ol><li>echo $js->writeBuffer();</li></ol></div></pre><!--END_DEVFMTCODE--><br />
Gracias a esto, ya no debemos depender solamente de prototype y scriptaculous, ahora podemos usar nuestro fiel jQuery nativamente con CakePHP.</p>
<p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p><p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2010%2F07%2F13%2Fjquery-y-cakephp-ahora-bien-afiatados%2F&amp;linkname=jQuery%20y%20CakePHP%2C%20ahora%20bien%20afiatados" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://vladzur.sangrederosas.cl/2010/07/13/jquery-y-cakephp-ahora-bien-afiatados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Componente para subir y redimensionar imágenes en CakePHP</title>
		<link>http://vladzur.sangrederosas.cl/2009/10/25/componente-para-subir-y-redimensionar-imagenes-en-cakephp/</link>
		<comments>http://vladzur.sangrederosas.cl/2009/10/25/componente-para-subir-y-redimensionar-imagenes-en-cakephp/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 03:40:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://vladzur.sangrederosas.cl/?p=366</guid>
		<description><![CDATA[Un interesante componente para CakePHP que permite cargar y redimensionar imágenes y generar miniaturas de la imágen incluso de acercamientos y cuadradas. Este componente fué escrito en base a varios otros recursos por el autor. Ver componente aquí. Me acabo de enterar de la existencia de este componente gracias a un mensaje en la lista [...]]]></description>
			<content:encoded><![CDATA[<p>Un interesante componente para CakePHP que permite cargar y redimensionar imágenes y generar miniaturas de la imágen incluso de acercamientos y cuadradas.</p>
<p>Este componente fué escrito en base a varios otros recursos por el autor.</p>
<p><a href="http://sabbour.wordpress.com/2008/05/13/image-upload-and-resize-component-for-cakephp-12/" target="_blank">Ver componente aquí</a>.</p>
<p>Me acabo de enterar de la existencia de este componente gracias a un mensaje en la lista de CakePHP en español, aún no lo he probado, pero he leído buenos comentarios.</p>
<p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p><p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F10%2F25%2Fcomponente-para-subir-y-redimensionar-imagenes-en-cakephp%2F&amp;linkname=Componente%20para%20subir%20y%20redimensionar%20im%C3%A1genes%20en%20CakePHP" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://vladzur.sangrederosas.cl/2009/10/25/componente-para-subir-y-redimensionar-imagenes-en-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin de seguridad para Cake</title>
		<link>http://vladzur.sangrederosas.cl/2009/09/09/plugin-de-seguridad-para-cake/</link>
		<comments>http://vladzur.sangrederosas.cl/2009/09/09/plugin-de-seguridad-para-cake/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 16:57:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://vladzur.wordpress.com/2009/09/09/plugin-de-seguridad-para-cake/</guid>
		<description><![CDATA[Para descargar el plugin sigue éste enlace http://www.4shared.com/file/131400156/e521c155/seguridad.html El plugin se instala en la carpeta /app/plugins/ El uso de este plugin es simple, primero debemos crear dos tablas en nuestra base de datos. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';&#160;CREATE&#160;&#160;TABLE IF NOT EXISTS `perfil` &#40;`id` INT NOT NULL AUTO_INCREMENT ,`nombre` VARCHAR&#40;45&#41; NULL ,PRIMARY KEY &#40;`id`&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>Para descargar el plugin sigue éste enlace <a href="http://www.4shared.com/file/131400156/e521c155/seguridad.html">http://www.4shared.com/file/131400156/e521c155/seguridad.html</a><br />
El plugin se instala en la carpeta /app/plugins/<br />
El uso de este plugin es simple, primero debemos crear dos tablas en nuestra base de datos.<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="SQL"><div class="devcodeoverflow"><ol><li></li><li><span style="color: #993333; font-weight: bold;">SET</span> @OLD_UNIQUE_CHECKS<span style="color: #66cc66;">=</span>@@UNIQUE_CHECKS<span style="color: #66cc66;">,</span> UNIQUE_CHECKS<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span>;</li><li><span style="color: #993333; font-weight: bold;">SET</span> @OLD_FOREIGN_KEY_CHECKS<span style="color: #66cc66;">=</span>@@FOREIGN_KEY_CHECKS<span style="color: #66cc66;">,</span> FOREIGN_KEY_CHECKS<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">0</span>;</li><li><span style="color: #993333; font-weight: bold;">SET</span> @OLD_SQL_MODE<span style="color: #66cc66;">=</span>@@SQL_MODE<span style="color: #66cc66;">,</span> SQL_MODE<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'TRADITIONAL'</span>;</li><li>&nbsp;</li><li><span style="color: #993333; font-weight: bold;">CREATE</span>&nbsp;&nbsp;<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`perfil`</span> <span style="color: #66cc66;">&#40;</span></li><li><span style="color: #ff0000;">`id`</span> INT <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #ff0000;">`nombre`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>45<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id`</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span></li><li>ENGINE <span style="color: #66cc66;">=</span> InnoDB;</li><li>&nbsp;</li><li><span style="color: #993333; font-weight: bold;">CREATE</span>&nbsp;&nbsp;<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`permiso`</span> <span style="color: #66cc66;">&#40;</span></li><li><span style="color: #ff0000;">`id`</span> INT <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #ff0000;">`autorizado`</span> TINYINT<span style="color: #66cc66;">&#40;</span>1<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #ff0000;">`perfil_id`</span> INT <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #ff0000;">`controlador`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>45<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #ff0000;">`accion`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>45<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id`</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">,</span></li><li><span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #ff0000;">`fk_permiso_perfil1`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`perfil_id`</span> <span style="color: #993333; font-weight: bold;">ASC</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">,</span></li><li>CONSTRAINT <span style="color: #ff0000;">`fk_permiso_perfil1`</span></li><li><span style="color: #993333; font-weight: bold;">FOREIGN</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`perfil_id`</span> <span style="color: #66cc66;">&#41;</span></li><li><span style="color: #993333; font-weight: bold;">REFERENCES</span> <span style="color: #ff0000;">`perfil`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`id`</span> <span style="color: #66cc66;">&#41;</span></li><li><span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #993333; font-weight: bold;">DELETE</span> NO ACTION</li><li><span style="color: #993333; font-weight: bold;">ON</span> <span style="color: #993333; font-weight: bold;">UPDATE</span> NO ACTION<span style="color: #66cc66;">&#41;</span></li><li>ENGINE <span style="color: #66cc66;">=</span> InnoDB;</li><li>&nbsp;</li><li><span style="color: #993333; font-weight: bold;">SET</span> SQL_MODE<span style="color: #66cc66;">=</span>@OLD_SQL_MODE;</li><li><span style="color: #993333; font-weight: bold;">SET</span> FOREIGN_KEY_CHECKS<span style="color: #66cc66;">=</span>@OLD_FOREIGN_KEY_CHECKS;</li><li><span style="color: #993333; font-weight: bold;">SET</span> UNIQUE_CHECKS<span style="color: #66cc66;">=</span>@OLD_UNIQUE_CHECKS;</li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Luego, configurar en nuestro plugin el archivo app/plugins/seguridad/controllers/components/seguridad.php<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li></li><li><span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$excepciones</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Pages'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span>array<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'display'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Login'</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span>array<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'logout'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'admin_index'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'admin_logout'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Aquí debemos poner las acciones y controladores que no deben ser supervisados por el plugin con el formato array(&#8216;Controlador&#8217;=&gt;array(&#8216;accion1&#8242;, &#8216;accion2&#8242;,&#8230;,&#8217;accionN&#8217;)).<br />
Lo siguiente es añadir el plugin a nuestra aplicación, para esto, ponemos en /app/app_controller.php<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li></li><li><span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$components</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Seguridad.Seguridad'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>y la función:<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li></li><li><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> beforeFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li><span style="color: #000088;">$controlador</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>params<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'controller'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></li><li><span style="color: #000088;">$accion</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>params<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></li><li><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>Seguridad<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>isException<span style="color: #009900;">&#40;</span><span style="color: #000088;">$controlador</span><span style="color: #339933;">,</span> <span style="color: #000088;">$accion</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li><span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span></li><li><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>Seguridad<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>checkAuth<span style="color: #009900;">&#40;</span><span style="color: #000088;">$controlador</span><span style="color: #339933;">,</span> <span style="color: #000088;">$accion</span><span style="color: #339933;">,</span> <span style="color: #000088;">$perfil</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li><span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span></li><li><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>redirect<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/pages/denegado'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span></li><li><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li><span style="color: #009900;">&#125;</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Ahora vamos a <a href="http://nuestro-sitio.com/seguridad/seguridad_perfil">http://nuestro-sitio.com/seguridad/seguridad_perfil</a> y creamos los perfiles necesarios, al editarlos podemos darle la autorización de acceso a la acción correspondiente a cada controlador.</p>
<p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p><p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F09%2Fplugin-de-seguridad-para-cake%2F&amp;linkname=Plugin%20de%20seguridad%20para%20Cake" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://vladzur.sangrederosas.cl/2009/09/09/plugin-de-seguridad-para-cake/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utilizar modelos y tablas en singular</title>
		<link>http://vladzur.sangrederosas.cl/2009/09/07/utilizar-modelos-y-tablas-en-singular/</link>
		<comments>http://vladzur.sangrederosas.cl/2009/09/07/utilizar-modelos-y-tablas-en-singular/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 21:10:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[inflections]]></category>
		<category><![CDATA[modelo]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://vladzur.wordpress.com/?p=23</guid>
		<description><![CDATA[Para poder usar los modelos y tablas en singular, debemos agregar una excepción en la configuración de Cake. inflections.php $uninflectedPlural = array('.*'); Ahora podemos usar nombres de tablas sin importar si están en singular o plural, usando en el modelo el mismo nombre de la tabla que hemos creado.]]></description>
			<content:encoded><![CDATA[<p>Para poder usar los modelos y tablas en singular, debemos agregar una excepción en la configuración de Cake.</p>
<p>inflections.php<br />
<pre>$uninflectedPlural = array('.*');</pre><br />
Ahora podemos usar nombres de tablas sin importar si están en singular o plural, usando en el modelo el mismo nombre de la tabla que hemos creado.</p>
<p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p><p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Futilizar-modelos-y-tablas-en-singular%2F&amp;linkname=Utilizar%20modelos%20y%20tablas%20en%20singular" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://vladzur.sangrederosas.cl/2009/09/07/utilizar-modelos-y-tablas-en-singular/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como mantener un filtro con paginación</title>
		<link>http://vladzur.sangrederosas.cl/2009/09/07/como-mantener-un-filtro-con-paginacion/</link>
		<comments>http://vladzur.sangrederosas.cl/2009/09/07/como-mantener-un-filtro-con-paginacion/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 20:48:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Filtro]]></category>
		<category><![CDATA[Paginator]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://vladzur.wordpress.com/?p=21</guid>
		<description><![CDATA[Una de los usos más comunes de las paginaciónes es limitar la visualización de el resultado de una búsqueda. Cake no da una manera fácil de hacer esta cotidiana tarea, pero se puede solucionar este problema usando &#8220;Session&#8221;. function admin_index() {     $criteria=null; $cond=array(); if(!empty($this-&#62;data)){ $apellido_paterno=$this-&#62;data['Buscar']['apellido_paterno']; $nombre=$this-&#62;data['Buscar']['nombre']; $rut=trim($this-&#62;data['Buscar']['rut']);             if($apellido_paterno!='')$cond[]="Usuario.apellido_paterno LIKE '%$apellido_paterno%' "; [...]]]></description>
			<content:encoded><![CDATA[<p>Una de los usos más comunes de las paginaciónes es limitar la visualización de el resultado de una búsqueda.</p>
<p>Cake no da una manera fácil de hacer esta cotidiana tarea, pero se puede solucionar este problema usando &#8220;Session&#8221;.<br />
<pre>function admin_index() {    
 $criteria=null;
 $cond=array();
 if(!empty($this-&gt;data)){
 $apellido_paterno=$this-&gt;data['Buscar']['apellido_paterno'];
 $nombre=$this-&gt;data['Buscar']['nombre'];
 $rut=trim($this-&gt;data['Buscar']['rut']);            
 if($apellido_paterno!='')$cond[]="Usuario.apellido_paterno LIKE '%$apellido_paterno%' ";
 if($nombre!='')$cond[]="Usuario.nombre LIKE '%$nombre%' ";
 if($rut!='')$cond[]="Usuario.rut =$rut ";
 if(count($cond)&gt;1){
 $criteria=implode(" AND ",$cond);
 }else{
 $criteria=$cond[0];
 $this-&gt;Session-&gt;write('Filtro.usuario', $criteria);
 }            
 if(empty($cond))$criteria=null;                
 }
 $filtro = $this-&gt;Session-&gt;read('Filtro.usuario');
 $this-&gt;set('usuario', $this-&gt;paginate('Usuario',$filtro));        
}</pre><br />
Éste trozo de código, implementa una búsqueda de usuario por nombre, apellido paterno o RUT (DNI), guardando el filtro en una variable de sesion, para usarlo atravez de las distintas páginas.</p>
<p>Para resetear el filtro, solo debemos borrar la variable de sesión<br />
<pre>$this-&gt;Session-&gt;write('Filtro.usuario', null);</pre><br />
Así podemos mostrar todos los registros sin el filtro de búsqueda.</p>
<p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p><p><a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Digg" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Facebook" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Delicious" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fvladzur.sangrederosas.cl%2F2009%2F09%2F07%2Fcomo-mantener-un-filtro-con-paginacion%2F&amp;linkname=Como%20mantener%20un%20filtro%20con%20paginaci%C3%B3n" title="Twitter" rel="nofollow" target="_blank"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://vladzur.sangrederosas.cl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://vladzur.sangrederosas.cl/2009/09/07/como-mantener-un-filtro-con-paginacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
