<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Yises &#187; CakePHP</title>
	<atom:link href="http://yises.com/blog/category/php/cakephp-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://yises.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 18 Jan 2012 17:58:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Obtener el ID de un registro almacenado en cakephp</title>
		<link>http://yises.com/blog/2011/12/26/obtener-el-id-de-un-registro-almacenado-en-cakephp/</link>
		<comments>http://yises.com/blog/2011/12/26/obtener-el-id-de-un-registro-almacenado-en-cakephp/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 12:39:47 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[lastInsertId]]></category>
		<category><![CDATA[obtener id]]></category>

		<guid isPermaLink="false">http://yises.com/blog/?p=639</guid>
		<description><![CDATA[En el hipotético caso de que haya hecho un save de unos datos en el interior de un modelo y quiera saber cuál es el Id que se le ha asignado automáticamente en la BBDD simplemente es necesario hacer $last_id = $this-&#62;ModelName-&#62;getInsertId(); Más info en la API de Cakephp en http://api.cakephp.org/class/model#method-ModelgetInsertID]]></description>
			<content:encoded><![CDATA[<p>En el hipotético caso de que haya hecho un save de unos datos en el interior de un modelo y quiera saber cuál es el Id que se le ha asignado automáticamente en la BBDD simplemente es necesario hacer</p>
<p>$last_id = $this-&gt;ModelName-&gt;getInsertId();</p>
<p>Más info en la API de Cakephp en <a href="http://api.cakephp.org/class/model#method-ModelgetInsertID">http://api.cakephp.org/class/model#method-ModelgetInsertID</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yises.com/blog/2011/12/26/obtener-el-id-de-un-registro-almacenado-en-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Cómo hacer distintas paginaciones en el mismo controlador de cakePHP?</title>
		<link>http://yises.com/blog/2010/10/04/%c2%bfcomo-hacer-distintas-paginaciones-en-el-mismo-controlador-de-cakephp/</link>
		<comments>http://yises.com/blog/2010/10/04/%c2%bfcomo-hacer-distintas-paginaciones-en-el-mismo-controlador-de-cakephp/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 11:01:31 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[paginacion cakephp]]></category>
		<category><![CDATA[paginación controlador cakephp]]></category>

		<guid isPermaLink="false">http://yises.com/blog/?p=409</guid>
		<description><![CDATA[Hoy explicaré cómo hacer dos paginaciones distintas dentro del mismo controlador. Tomaré un reciente ejemplo que tenía que hacer, en el cual debía mostrar los elementos cuyo valor &#8220;aceptado&#8221; se encontrara a 1 de 15 en 15, y que se encontraran ordenados por el número de votos que habían recibido y también tenía que mostrar [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Hoy explicaré cómo hacer dos paginaciones distintas dentro del mismo controlador. Tomaré un reciente ejemplo que tenía que hacer, en el cual debía mostrar los elementos cuyo valor &#8220;aceptado&#8221; se encontrara a 1 de 15 en 15, y que se encontraran ordenados por el número de votos que habían recibido y también tenía que mostrar aquellos cuyo valor aceptado fuera 0.</p>
<p style="text-align: center;"><img class="size-full wp-image-413  aligncenter" title="Tarta CakePHP" src="http://yises.com/blog/wp-content/uploads/2010/10/chafatipolol.jpg" alt="Paginacion cakePHP" width="180" height="196" /></p>
<p style="text-align: left;">
Los pasos seguidos fueron los siguientes:<br />
<strong>1</strong> &#8211; Incluir la siguiente variable global en el controlador.</p>
<pre name="code" class="php">var $paginate = array(
   'conditions'=&gt; array('Suitcase.aceptado'=&gt;1),
   'limit' =&gt; 15,
   'order' =&gt; array(
     'Suitcase.vote' =&gt; 'desc'
   )
);</pre>
<p><strong>2</strong> &#8211; Hacer uso de esta paginación en cada función del paginador que lo necesitara mediante la introducción de esta línea.</p>
<pre name="code" class="php">$this-&gt;set('cases', $this-&gt;paginate('Suitcase'));</pre>
<p><strong>3</strong> &#8211; Y ahora el problema estaba en cómo hacer otra paginación sin afectar a la primera. Pues simplemente sustituyendo en la función(recordad que no es como antes que lo poníamos en la zona de variables globales del documento!!) la variable $this-&gt;paginate por la que en estos momentos necesitaba.</p>
<pre name="code" class="php">
$this-&gt;paginate = array(
   'conditions'=&gt; array('Suitcase.aceptado'=&gt;0),
   'limit' =&gt; 15,
   'order' =&gt; array(
     'Suitcase.vote' =&gt; 'desc'
   )
);</pre>
<p><strong>4</strong> &#8211; Y llamándole de la misma forma.</p>
<pre name="code" class="php">$this-&gt;set('cases', $this-&gt;paginate('Suitcase'));</pre>
]]></content:encoded>
			<wfw:commentRss>http://yises.com/blog/2010/10/04/%c2%bfcomo-hacer-distintas-paginaciones-en-el-mismo-controlador-de-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Captcha visual para cakePHP</title>
		<link>http://yises.com/blog/2010/09/09/captcha-visual-para-cakephp/</link>
		<comments>http://yises.com/blog/2010/09/09/captcha-visual-para-cakephp/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 18:00:04 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[captcha visual]]></category>
		<category><![CDATA[componente cakePHP]]></category>

		<guid isPermaLink="false">http://yises.com/blog/?p=320</guid>
		<description><![CDATA[Hola a todos, hoy vamos a integrar un componente captcha en un proyecto de cakePHP. Es cierto que hay dos o tres por la red, pero la peculiaridad de este es que es un captcha totalmente visual (podéis ver aquí el ejemplo, recordad que tenéis que rellenar los dos campos): Es decir que tendremos que [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a todos, hoy vamos a integrar un componente captcha en un proyecto de cakePHP. Es cierto que hay dos o tres por la red, pero la peculiaridad de este es que es un captcha totalmente visual (<a title="Ejemplo del captcha visual" href="http://www.yises.com/jquery/ajax-fancy-captcha-php/example.html" target="_blank">podéis ver aquí el ejemplo</a>, recordad que tenéis que rellenar los dos campos):</p>
<p><a href="http://yises.com/blog/wp-content/uploads/2010/09/ajaxFancyCaptcha1.jpg"><img class="aligncenter size-full wp-image-326" title="ajaxFancyCaptcha1" src="http://yises.com/blog/wp-content/uploads/2010/09/ajaxFancyCaptcha1.jpg" alt="" width="323" height="115" /></a></p>
<p>Es decir que tendremos que arrastrar en el caso superior mediante el ratón el reloj desde donde está hasta el círculo quedando de la siguiente forma para que pueda continuarse adecuadamente&#8230;</p>
<p><a href="http://yises.com/blog/wp-content/uploads/2010/09/ajaxFancyCaptcha2.jpg"><img class="aligncenter size-full wp-image-327" title="ajaxFancyCaptcha2" src="http://yises.com/blog/wp-content/uploads/2010/09/ajaxFancyCaptcha2.jpg" alt="" width="320" height="111" /></a></p>
<p>Pasos a seguir:</p>
<p>1- En la función del <strong>controlador </strong>donde <strong>queramos utilizarlo</strong> añadimos las siguientes líneas de código</p>
<pre name="code" class="php">/*Para el captcha*/
$rand = rand(0,4);
$_SESSION['captcha'] = $rand;
$this-&gt;set('rand',$rand);</pre>
<p><br/><br />
2- En la función del <strong>controlador </strong>donde <strong>queramos recibir los datos</strong> incluiremos estas líneas:</p>
<pre name="code" class="php">/* this compare captcha's number from POST and SESSION */
if($_SERVER['REQUEST_METHOD'] == "POST" &amp;&amp; $this-&gt;data['captcha'] &amp;&amp; $this-&gt;data['captcha'] == $_SESSION['captcha']){
        /* this line makes session free, we recommend you to keep it */
        unset($_SESSION['captcha']);
} elseif($_SERVER['REQUEST_METHOD'] == "POST" &amp;&amp; !$this-&gt;data['captcha']){
       // Aquí redireccionaremos a donde queramos que vaya en
       // este caso erróneo
       $this-&gt;redirect('/');
}</pre>
<p><br/><br />
3-En la vista(en mi caso en la plantilla) añadimos las siguientes líneas en el header</p>
<pre name="code" class="php">&lt;link rel="stylesheet" href="/css/captcha.css" type="text/css" /&gt;

&lt;script type="text/javascript" src="/js/jquery-1.3.2.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/jquery-ui-1.7.2.custom.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/jquery.captcha.js"&gt;&lt;/script&gt;

&lt;?php if(isset($rand)){
   echo '&lt;script type="text/javascript"&gt;
      $j(function() {
        $j(".ajax-fc-container").captcha({
          url: '.$rand.',
          borderColor: "silver",
          text: "Arrastra &lt;span&gt;scissors&lt;/span&gt; al círculo.",
          formId:"formulario" //aquí el id del formulario
        });
      });
    &lt;/script&gt;';
}?&gt;</pre>
<p><br/><br />
4-Dentro de la vista donde queramos que se dibuje el captcha añadiremos las siguientes líneas (así de sencillo!!)</p>
<pre name="code" class="php">&lt;!-- Begin of captcha --&gt;
&lt;div class="ajax-fc-container"&gt;You must enable javascript to see captcha here!
&lt;/div&gt;
&lt;!-- End of captcha --&gt;</pre>
<p><br/><br />
5-Para que funcione será necesario copiar los archivos siguientes en las carpetas que indicamos:</p>
<ul>
<li><strong>captcha.css</strong> en la carpeta <strong>webroot/css</strong>.</li>
<li>Las <strong>imágenes</strong> que se encuentran en la carpeta imgs del zip en la carpeta <strong>webroot/imgs</strong> (son 13 imágenes, entre ellas están las imágenes entre las cuáles será necesario escoger)</li>
<li>Los archivos <strong>iepngfix.htc</strong>,  <strong>jquery-1.3.2.min.js</strong>,<strong> jquery-ui-1.7.2.custom.min.js</strong> y<strong> jquery.captcha.js</strong> en la carpeta <strong>webroot/js</strong>.</li>
</ul>
<p>6-(Opcional)Modificar la línea 37 del archivo jquery.captcha.js para cambiar el name del input que se generará name=\&#8221;data[captcha]\&#8221;<br />
<br/><br />
<a title="Componente Captcha visual" href="http://www.yises.com/jquery/ajax-fancy-captcha-php.zip" target="_blank">Aquí os dejo dichos archivos para que os los descarguéis</a>. Dejar claro también que este componente no lo cree yo, sino <a title="Web creadores captcha visual" href="http://www.webdesignbeach.com/beachbar/ajax-fancy-captcha-jquery-plugin" target="_blank">estos señores</a>, sólo me he limitado a adaptarlo a cakePHP y a explicar cómo se utiliza en español <img src='http://yises.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://yises.com/blog/2010/09/09/captcha-visual-para-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo incrementar el tiempo de sesión en cakePHP</title>
		<link>http://yises.com/blog/2010/06/02/como-incrementar-el-tiempo-de-sesion-en-cakephp/</link>
		<comments>http://yises.com/blog/2010/06/02/como-incrementar-el-tiempo-de-sesion-en-cakephp/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 14:15:16 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Auth]]></category>
		<category><![CDATA[cake]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[componente cakePHP]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[tiempo login]]></category>

		<guid isPermaLink="false">http://yises.com/blog/?p=272</guid>
		<description><![CDATA[Hoy he necesitado aumentar el tiempo que permanecía un usuario logueado sin que le sacara la aplicación considerándole usuario sin credenciales. Para modificar dicho tiempo es necesario acceder al siguiente código que se encuentra en el fichero: APP-&#62;CONFIG-&#62;core.php /** * Session time out time (in seconds). * Actual value depends on 'Security.level' setting. * 120 [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy he necesitado aumentar el tiempo que permanecía un usuario logueado sin que le sacara la aplicación considerándole usuario sin credenciales. Para modificar dicho tiempo es necesario acceder al siguiente código que se encuentra en el fichero: APP-&gt;CONFIG-&gt;core.php</p>
<pre name="code" class="php">/**
 * Session time out time (in seconds).
 * Actual value depends on 'Security.level' setting.
 * 120 son 2 minutos -&gt; si session.timeout es high  2x10 =&gt; 20 minutos
 * 360 son 6 minutos -&gt; si session.timeout es high  6x10 =&gt; 1 hora
 * 8640 son 144 minutos  -&gt; si session.timeout es high  24 horas
 */
Configure::write(</code><code>'<strong>Session.timeout</strong>','120');//3600 seconds</pre>
<div>y</div>
<pre name="code" class="php">/**
 * The level of CakePHP security. The session timeout time defined
 * in 'Session.timeout' is multiplied according to the settings here.
 * Valid values:
 *
 * 'high'	Session timeout in 'Session.timeout' x 10
 * 'medium'	Session timeout in 'Session.timeout' x 100
 * 'low'		Session timeout in 'Session.timeout' x 300
 *
 * CakePHP session IDs are also regenerated between requests if
 * 'Security.level' is set to 'high'.
 */
Configure::write('<strong>Security.level</strong>', 'high');</pre>
<div>Si tenéis el timeout a 120 y el nivel de seguridad a high, el tiempo que os permitirá estar logueados sin ninguna actividad en la aplicación es de 120*10/60 = 20 minutos.</div>
<div>Si quisiérais mantener el logueo durante 24 horas con un nivel de seguridad high tendréis que poner el timeout a 8640 (8640*10/(60*24) = 1).</div>
<div>Espero que os haya sido de utilidad!!</div>
]]></content:encoded>
			<wfw:commentRss>http://yises.com/blog/2010/06/02/como-incrementar-el-tiempo-de-sesion-en-cakephp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Como introducir un icono en tu página web (Normal, CakePHP y WordPress)</title>
		<link>http://yises.com/blog/2010/03/26/como-introducir-un-icono-en-tu-pagina-web-normal-cakephp-y-wordpress/</link>
		<comments>http://yises.com/blog/2010/03/26/como-introducir-un-icono-en-tu-pagina-web-normal-cakephp-y-wordpress/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 09:05:06 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion Web General]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[buscador]]></category>
		<category><![CDATA[ico]]></category>
		<category><![CDATA[iconos]]></category>
		<category><![CDATA[png]]></category>

		<guid isPermaLink="false">http://yises.com/blog/?p=211</guid>
		<description><![CDATA[La lección de hoy es la de introducir un icono en vuestra página para que en los navegadores se pueda ver justo al lado de la ruta. Quiero explicarlo para tres casos distintos: Para una pa´gina web normal, para una aplicación de cakePHP y para el blog WordPress. Icono en web Normal En el primero [...]]]></description>
			<content:encoded><![CDATA[<p>La lección de hoy es la de introducir un icono en vuestra página para que en los navegadores se pueda ver justo al lado de la ruta. Quiero explicarlo para tres casos distintos: Para una pa´gina web normal, para una aplicación de cakePHP y para el blog WordPress.</p>
<h2><strong>Icono en web Normal</strong></h2>
<p>En el primero de los casos hay que realizar los siguientes pasos:</p>
<ul>
<li>Subir un icono mediante ftp a tu servidor.</li>
<li>En aquellas páginas que se quiera tener es necesario agregar la siguiente línea de código en el head de la página en la que queráis el iconito (cambiad favicon por el nombre de vuestro icono):</li>
</ul>
<pre lang="java">
<link href="/favicon.ico" rel="shortcut icon"></pre>
<h2><strong>Icono en web creada en CakePHP</strong></h2>
<p>Para aquellos que estéis trabajando con cakePHP simplemente tenéis que renombrar vuestro icono llamándolo favicon.ico y sustituyéndolo por el que se encuentra en la carpeta webroot de vuestra aplicación (el icono inicial es el que representa a una tarta).</p>
<h2><strong>Icono en un blog WordPress</strong></h2>
<p>Tenéis que:</p>
<ul>
<li>Subir  vuestro icono a la carpeta raíz de vuestra web</li>
<li>Introducir en el header.php del theme que estéis utilizando (ese theme se encontrará en la carpeta wp-content/themes/tutheme) la línea de código siguiente:</li>
</ul>
<pre lang="java">
<link href="/favicon.ico" rel="shortcut icon"/> </pre>
<h2><strong>Buscador de iconos</strong></h2>
<p>Y si no sabéis donde encontrar vuestro icono aquí os dejo una página bastante interesante, en la cuál se pueden hacer búsquedas de iconos, que posteriormente te dan la oportunidad de descargar en diferentes tamaños, tipos,&#8230;. Realmente muy útil. Es <a title="Buscador de Iconos" href="http://findicons.com/" target="_blank">http://findicons.com/</a>.</p>
<p>Nota Importante: Puede que no veáis en un primer momento el icono que habéis instalado. Esto puede deberse a los archivos temporales que ha almacenado el navegador que utilizáis. Borradlos y volved a probar (o esperad a que automáticamente se borren, cosa que puede tardar un montón de tiempo)</p>
]]></content:encoded>
			<wfw:commentRss>http://yises.com/blog/2010/03/26/como-introducir-un-icono-en-tu-pagina-web-normal-cakephp-y-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cakephp: Radiobutton en formulario</title>
		<link>http://yises.com/blog/2010/02/16/cakephp-radiobutton-en-formulario/</link>
		<comments>http://yises.com/blog/2010/02/16/cakephp-radiobutton-en-formulario/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 12:15:27 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[problema]]></category>

		<guid isPermaLink="false">http://yises.com/blog/?p=126</guid>
		<description><![CDATA[Pues hoy he necesitado crear unos radiobuttons dentro de un formulario. Este formulario se llama una y otra vez porque su objetivo es el hacer que el usuario conteste una pregunta y si acierta, que conteste otra. En un principio mi código era el siguiente: Pero esto me generó un problema: por alguna extraña razón [...]]]></description>
			<content:encoded><![CDATA[<p>Pues hoy he necesitado crear unos radiobuttons dentro de un formulario. Este formulario se llama una y otra vez porque su objetivo es el hacer que el usuario conteste una pregunta y si acierta, que conteste otra.</p>
<p>En un principio mi código era el siguiente:</p>
<pre name="code" class="php">
<?php
  $contents = '';
  $contents .= $question;
  $contents .= $form->create('User', array('action' => 'index/'.$id));
  $contents .= $form->radio('Respuesta',
         array('1'=>$answer1, '2'=>$answer2, '3'=>$answer3));
  $contents .= $form->end('Enviar info');
  echo $contents;
?>
</pre>
<p>Pero esto me generó un problema: por alguna extraña razón me mantenía el valor de la pregunta anterior en el formulario. Es decir, si había marcado la 3ª respuesta como válida en la primera pregunta, pulsaba el botón de enviar la información y en la segunda pregunta me mapeaba esa 3ª respuesta.<br />
Buscando por foros encontré una solución que no me valió, la de añadir un default (quizás hay alguien que lo haya podido desentrañar)<br />
En mi caso, y como lo resolví fue agregando array(&#8216;value&#8217;=>&#8217;0&#8242;) en la creación del radiobutton. De esta forma el código queda así:</p>
<pre name="code" class="php">
<?php
  $contents = '';
  $contents .= $question;
  $contents .= $form->create('User', array('action' => 'index/'.$id));
  $contents .= $form->radio('Respuesta',
         array('1'=>$answer1, '2'=>$answer2, '3'=>$answer3), array('value'=>'0'));
  $contents .= $form->end('Enviar info');
  echo $contents;
?>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://yises.com/blog/2010/02/16/cakephp-radiobutton-en-formulario/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

