<?xml version="1.0" encoding="UTF-8"?><!-- generator="bbPress" -->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
<title>Dudas de cakephp &#187; Forum: dudas - Recent Topics</title>
<link>http://cakephp.hospedaxes.com/dudas/</link>
<description>Just another bbPress community</description>
<language>en</language>
<pubDate>Thu, 09 Sep 2010 03:08:42 +0000</pubDate>

<item>
<title>nuria en "Calendario en CakePHP"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/calendario-en-cakephp-1#post-111</link>
<pubDate>Lun, 01 Feb 2010 08:34:14 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">111@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;Cuando estamos &#60;a href=&#34;http://www.hospedaxes.com&#34;&#62;desarrollando una página web&#60;/a&#62;, a menudo necesitamos introducir un calendario que nos permita seleccionar las fechas sin tener que escribirlas a mano.&#60;/p&#62;
&#60;p&#62;En este post vamos a explicar cómo hacer esto, utilizando para ello el calendario &#60;a href=&#34;http://www.dynarch.com/projects/calendar/&#34;&#62;DHTML Calendar&#60;/a&#62; desarrollado por &#60;a href=&#34;http://www.dynarch.com/&#34;&#62;Dynarch&#60;/a&#62;. Es un calendario con licencia &#60;a href=&#34;http://es.wikipedia.org/wiki/Licencia_p%C3%BAblica_general_de_GNU&#34;&#62;GNU&#60;/a&#62; y que cubre perfectamente todas las funcionalidades que necesitamos.&#60;/p&#62;
&#60;p&#62;Todos los ficheros necesarios para introducir el calendario en nuestra página web, junto con la estructura como se organizan en CakePHP 1.2, pueden descargarse &#60;a href=&#34;http://cakephp.hospedaxes.com/wp-content/uploads/2008/07/calendariotar.gz&#34;&#62;calendario&#60;/a&#62;. Lo explicaremos paso a paso.&#60;/p&#62;
&#60;p&#62;Lo primero que tenemos que hacer es descargarnos el calendario (podemos hacerlo directamente de la página web de Dynarch, o bien mediante el enlace del párrafo anterior) y descomprimirlo en la carpeta &#60;em&#62;app/webroot/js&#60;/em&#62;. Necesitamos también otro fichero javascript, &#60;em&#62;common.js&#60;/em&#62;, que también meteremos en esa carpeta. En el &#60;em&#62;body&#60;/em&#62;, incluiremos estos ficheros escribiendo:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;// Calendar includes
echo $javascript-&#62;link('jscalendar-1.0/calendar.js');
echo $javascript-&#62;link('jscalendar-1.0/lang/calendar-es.js');
echo $javascript-&#62;link('common.js');
// CSS Theme
echo $html-&#62;css('../js/jscalendar-1.0/skins/aqua/theme');&#60;/pre&#62;
&#60;p&#62;Necesitamos ahora implementar un helper para que nos sea mucho más fácil la utilización de este calendario. Lo descargamos del enlace anterior y lo metemos en la carpeta &#60;em&#62;app/views/helpers&#60;/em&#62;. Si miramos el código de este helper vemos que tenemos dos funciones, &#60;strong&#62;picker&#60;/strong&#62; y &#60;strong&#62;flat&#60;/strong&#62;, que nos permiten hacer que este calendario aparezca al pulsar un botón o que esté siempre visible en nuestra página.&#60;/p&#62;
&#60;p&#62;Ya sólo nos falta introducir este calendario en nuestras páginas.&#60;/p&#62;
&#60;p&#62;En el controlador, importamos el helper:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;var $helpers = array('DatePicker');&#60;/pre&#62;
&#60;p&#62;Y en la vista mostramos el calendario:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;echo $datePicker-&#62;flat('fechaCalendarioFlat', array('id'=&#62;'fechaCalendarioFlat'));
echo $datePicker-&#62;picker('fechaCalendarioPicker', array('id'=&#62;'fechaCalendarioPicker'));&#60;/pre&#62;
&#60;p&#62;Podemos ver una demostración del funcionamiento del calendario en este &#60;a title=&#34;Calendario en CakePHP 1.2&#34; href=&#34;http://cakephp.hospedaxes.com/pruebas/calendario&#34;&#62;enlace&#60;/a&#62;.&#60;/p&#62;
&#60;p&#62;A partir del código proporcionado, podríamos añadir muchas funcionalidades. Por ejemplo, podremos editar el código del helper, para añadirle un observador de javascript al calendario tipo flat y que al pulsar en una fecha nos lleve a otra url, o podríamos hacer que ciertas fechas especiales se coloreen de manera distinta al resto.&#60;/p&#62;
&#60;p&#62;&#60;em&#62;NOTA:&#60;/em&#62; Tras el comentario de Hijal, hemos comprobado que la versión del helper enlazada en este post es para la versión 1.1 de CakePHP, para la versión 1.2 únicamente habría que modificar las funciones &#60;strong&#62;flat&#60;/strong&#62; y &#60;strong&#62;picker&#60;/strong&#62;, de la manera que se muestra a continuación:&#60;/p&#62;
&#60;p&#62;function picker($fieldName, $options = array()) {&#60;br /&#62;
$this-&#38;gt;_setup();&#60;br /&#62;
$htmlAttributes = $this-&#38;gt;domId($options);&#60;br /&#62;
$divOptions['class'] = &#38;#8216;date&#38;#8217;;&#60;br /&#62;
$options['type'] = &#38;#8216;text&#38;#8217;;&#60;br /&#62;
$options['div']['class'] = &#38;#8216;date&#38;#8217;;&#60;br /&#62;
$options['after'] = $this-&#38;gt;Html-&#38;gt;link($this-&#38;gt;Html-&#38;gt;image(&#38;#8217;../js/jscalendar-1.0/img.gif&#38;#8217;), &#38;#8216;#&#38;#8217;, array(&#38;#8217;onClick&#38;#8217;=&#38;gt;&#38;#8221;return showCalendar(&#38;#8217;&#38;#8221;.$htmlAttributes['id'].&#38;#8221;&#38;#8216;, &#38;#8216;&#38;#8221;.$this-&#38;gt;format.&#38;#8221;&#38;#8216;); return false;&#38;#8221;), null, false);&#60;br /&#62;
$output = $this-&#38;gt;input($fieldName, $options);&#60;br /&#62;
return $output;&#60;br /&#62;
}&#60;/p&#62;
&#60;p&#62;function flat($fieldName, $options = array()){&#60;br /&#62;
$this-&#38;gt;_setup();&#60;br /&#62;
$htmlAttributes = $this-&#38;gt;domId($options);&#60;br /&#62;
$divOptions['class'] = &#38;#8216;date&#38;#8217;;&#60;br /&#62;
$options['type'] = &#38;#8216;hidden&#38;#8217;;&#60;br /&#62;
$options['div']['class'] = &#38;#8216;date&#38;#8217;;&#60;br /&#62;
$hoder = &#38;#8216;&#38;lt;div id=&#38;#8221;&#38;#8216;.$htmlAttributes['id'].&#38;#8217;_cal&#38;#8217;.'&#38;#8221;&#38;gt;&#38;lt;/div&#38;gt;&#38;lt;script type=&#38;#8221;text/javascript&#38;#8221;&#38;gt;showFlatCalendar(&#38;#8221;&#38;#8216;.$htmlAttributes['id'].&#38;#8217;&#38;#8221;, &#38;#8220;&#38;#8216;.$htmlAttributes['id'].&#38;#8217;_cal&#38;#8217;.'&#38;#8221;, &#38;#8220;&#38;#8216;.$this-&#38;gt;format.&#38;#8217;&#38;#8221;, function(cal, date){document.getElementById(&#38;#8221;.$htmlAttributes['id'].&#38;#8221;.&#38;#8217;').value = date});&#38;lt;/script&#38;gt;&#38;#8217;;&#60;br /&#62;
$output = $this-&#38;gt;input($fieldName, $options).$hoder;&#60;br /&#62;
return $output;&#60;br /&#62;
}&#60;/p&#62;
&#60;p&#62;Estas dos funciones se encuentran ya modificadas en el fichero tar.gz que se adjunta en el post. Junto con otra modificación surgida tras el siguiente comentario en el foro &#60;a href=&#34;http://cakephp.hospedaxes.com/dudas/topic/calendario-en-cakephp&#34; target=&#34;_blank&#34;&#62;http://cakephp.hospedaxes.com/dudas/topic/calendario-en-cakephp&#60;/a&#62;&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/calendario-en-cakephp&#34;&#62;Calendario en CakePHP&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>yoel en "cakephp&#38;jquery ??"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/cakephpjquery#post-150</link>
<pubDate>Vie, 13 Aug 2010 22:56:01 +0000</pubDate>
<dc:creator>yoel</dc:creator>
<guid isPermaLink="false">150@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;amigos tendran a la mano algun manual o ejemplo para trabajar con cakephp y jquery a la vez, quiero decir, poder hacer uso de las funcionalidades de jquery y al mismo tiempo crear api’s con cakephp sin ningun problema??, o tal vez alguna idea para poder trabajar con ambos frameworks.&#60;/p&#62;
&#60;p&#62;Les agradesco su atención y tiempo, cualquier sugerencia me será de gran ayuda. Si pueden responde a mi e-mail.
&#60;/p&#62;
</description>
</item>
<item>
<title>josemanuel en "Problema creando modelos con bake sobre oracle"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/problema-creando-modelos-con-bake-sobre-oracle#post-146</link>
<pubDate>Lun, 05 Jul 2010 11:54:37 +0000</pubDate>
<dc:creator>josemanuel</dc:creator>
<guid isPermaLink="false">146@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Hola.&#60;br /&#62;
Estoy intentando crear los modelos mediante bake pero no llega a conectar con la base de datos oracle. No sale ningún tipo de error. El archivo de configuración database.php creo que está bien creado porque con una página de test logro conectar.&#60;br /&#62;
Contra mysql sí logro crear los modelos sin ningún problema.&#60;/p&#62;
&#60;p&#62;¿Alguien sabe qué podría ser?&#60;br /&#62;
Gracias.
&#60;/p&#62;
</description>
</item>
<item>
<title>bernal en "Crear pdfs en cakephp utilizando TCPDF"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/crear-pdfs-en-cakephp-utilizando-tcpdf#post-13</link>
<pubDate>Mie, 08 Jul 2009 06:59:21 +0000</pubDate>
<dc:creator>bernal</dc:creator>
<guid isPermaLink="false">13@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;En nuestra experiencia en &#60;a href=&#34;http://www.hospedaxes.com&#34;&#62;desarrollo web&#60;/a&#62;, se nos ha planteado proyectos que tenían como uno de sus requisitos la creación de un archivo pdf generado automáticamente, por ejemplo una factura de compra o un informe de ventas.&#60;/p&#62;
&#60;p&#62;En un principio, comenzamos utilizando &#60;a href=&#34;http://www.fpdf.org&#34;&#62;fpdf&#60;/a&#62;, una clase en php, totalmente gratuíta, que permite crear automáticamente archivos pdf y que además tenía un helper para cakephp 1.1.&#60;/p&#62;
&#60;p&#62;Esta clase funcionaba increíblemente bien, pero como todos los proyectos que no se actualizan regularmente (hasta hace poco llevaban más de 4 años sin realizar cambios), se quedan desfasados.&#60;/p&#62;
&#60;p&#62;Tenía un gran número de desventajas como que no aceptaba codificación UTF-8, o lo complejo que resultaba su uso.&#60;/p&#62;
&#60;p&#62;De este proyecto surgió en 2002 una rama, &#60;a href=&#34;http://tcpdf.sf.net&#34;&#62;TCPDF&#60;/a&#62;. Este proyecto ,también libre y gratuíto, en un principio solucionaba carencias del &#60;a href=&#34;http://www.fpdf.org&#34;&#62;fpdf&#60;/a&#62;, pero finalmente se ha convertido en una versión mucho más potente, con gran cantidad de posibilidades como por ejemplo el soporte de UTF-8 o idiomas de derecha-izquierda, permite la utilización de códigos html e incluye una lista bastante amplia de fuentes libres, que podremos utilizar en nuestro pdf.&#60;/p&#62;
&#60;p&#62;Para incluirlo en uno de nuestros proyectos y empezar a utilizarlo hay que llevar a cabo una serie de pasos bastante sencillos (añadir nuevas funcionalidades a un proyecto cakePHP se ha facilitado en la versión 1.2), en primer lugar bajar la última versión de TCPDF, descomprimirla en el directorio /app/vendors de nuestra aplicación.&#60;/p&#62;
&#60;p&#62;El resultado debería ser /app/vendors/tcpdf/ conteniendo al menos, tcpdf.php y los directorios tcpdf/config y tcpdf/fonts&#60;/p&#62;
&#60;p&#62;En segundo lugar tendremos que crear un layout para los pdf&#38;#8217;s en /app/views/layouts/pdf.ctp, con este contenido&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;header(&#34;Content-type: application/pdf&#34;);
echo $content_for_layout;&#60;/pre&#62;
&#60;p&#62;En el controlador que queramos crear los pdf&#38;#8217;s, crearemos una función para ello&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;function pdf()
{
      Configure::write('debug',0);
      $this-&#62;layout = 'pdf'; //this will use the pdf.ctp layout
      // Operaciones que deseamos realizar y variables que pasaremos a la vista.
      $this-&#62;render();
}&#60;/pre&#62;
&#60;p&#62;Por último una vista para esta función, con el siguiente contenido:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;App::import('Vendor','tcpdf');
$tcpdf = new TCPDF();
$textfont = 'freesans';
$tcpdf-&#62;SetCreator(PDF_CREATOR);
$tcpdf-&#62;SetAuthor(&#34;autor&#34;);
$tcpdf-&#62;SetTitle(&#34;Título&#34;);
$tcpdf-&#62;SetSubject(&#34;Tutorial TCPDF en cakePHP&#34;);
$tcpdf-&#62;SetKeywords(&#34;TCPDF, PDF, cakePHP, ejemplo&#34;);
$tcpdf-&#62;setPrintHeader(false);
$tcpdf-&#62;setPrintFooter(false);
$tcpdf-&#62;SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$tcpdf-&#62;SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$tcpdf-&#62;setImageScale(PDF_IMAGE_SCALE_RATIO);
$tcpdf-&#62;setLanguageArray($l);
$tcpdf-&#62;AliasNbPages();
$tcpdf-&#62;AddPage();
$tcpdf-&#62;SetFont(&#34;freesans&#34;, &#34;BI&#34;, 20);
$tcpdf-&#62;Cell(0,10,&#34;Hola mundo&#34;,1,1,'C');
$tcpdf-&#62;Output(&#34;ejemplo.pdf&#34;, &#34;I&#34;);&#60;/pre&#62;
&#60;p&#62;En este ejemplo se creará un pdf muy sencillo con un cuadrado con el texto hola mundo dentro.&#60;br /&#62;
Las posibilidades de TCPDF son muchas, para comprobar lo que es capaz de hacer, es recomendable ojear los ejemplos contenidos en la &#60;a href=&#34;http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_examples&#34;&#62;página&#60;/a&#62; y la documentación de la &#60;a href=&#34;http://www.tecnick.com/pagefiles/tcpdf/doc/com-tecnick-tcpdf/TCPDF.html&#34;&#62;clase&#60;/a&#62;, que explica el funcionamiento de todos sus métodos.&#60;/p&#62;
&#60;p&#62;En nuestra página de &#60;a href=&#34;http://cakephp.hospedaxes.com/pruebas&#34;&#62;pruebas de cakephp&#60;/a&#62; hay un &#60;a href=&#34;http://cakephp.hospedaxes.com/pruebas/ejemplo_pdf&#34;&#62;ejemplo sencillo&#60;/a&#62; de funcionamiento.&#60;/p&#62;
&#60;p&#62;&#60;strong&#62;Actualización (9/2/2009) :&#60;/strong&#62;&#60;/p&#62;
&#60;p&#62;&#60;strong&#62;Errores frecuentes:&#60;/strong&#62;&#60;/p&#62;
&#60;p&#62;“TCPDF error: Some data has already been output to browser, can’t send PDF file”: Este error se produce cuando cakePHP envía algún dato antes de crear el pdf y enviarlo, esto puede ocurrir por una serie de razones que habrá que comprobar:&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62;Realizar un debug o un echo, en la vista o controlador.Esto crea salida de datos por lo que se genera el error, para eso añadimos en la primera línea de la función del controlador Configure::write(&#38;#8217;debug&#38;#8217;,0); , función que lo que hace es cambiar el nivel de debug a modo producción, donde no se muestra ningún mensaje, ni de error ni warnings.&#60;/li&#62;
&#60;li&#62;Existencia de caracteres de salto de línea o espacios después del símbolo de fín de archivo php, ?&#38;gt;. Para esto hay que comprobar todos los ficheros de nuestro proyecto y borrar todos los caracteres o saltos de línea que haya al final del fichero. Esta suele ser la razón más habitual para este error por lo que debemos comprobar todos los ficheros antes de tirar la toalla con tcpdf.&#60;/li&#62;
&#60;/ul&#62;
&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/crear-pdf&#34;&#62;Crear pdfs en cakephp utilizando TCPDF&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>david en "Mostrar videos con FlowPlayer"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/mostrar-videos-con-flowplayer#post-30</link>
<pubDate>Mie, 28 Oct 2009 12:28:58 +0000</pubDate>
<dc:creator>david</dc:creator>
<guid isPermaLink="false">30@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;Primero descargamos el FlowPlayer. Para ello vamos a la página oficial de descarga de &#60;a href=&#34;http://flowplayer.org/download/index.html&#34; target=&#34;_blank&#34; rel=&#34;nofollow&#34;&#62;FlowPlayer&#60;/a&#62; y lo instalamos en la carpeta    /app/webroot/js.&#60;/p&#62;
&#60;p&#62;En la vista donde queremos que se vea el video se añade&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;&#38;lt;?php
// Librería necesaria para el Flowplayer
   echo $javascript-&#38;gt;link('flowplayer/example/flowplayer-3.1.4.min');
?&#38;gt;
&#38;lt;?php
   echo $html-&#38;gt;link('', '/files/ejemplo.flv' , array('id' =&#38;gt; 'player1' , 'class' =&#38;gt; 'video'));
?&#38;gt;
&#38;lt;script language=&#34;JavaScript&#34;&#38;gt;
   // Función para cargar el Flowplayer en la zona correspondiente
   flowplayer(
    &#34;player1&#34;,
    &#34;&#38;lt;?php echo Router::url(&#34;/&#34;); ?&#38;gt;js/flowplayer/flowplayer-3.1.5.swf&#34;,
    {
      clip: {
               autoPlay: false,
	       autoBuffering: true
	     }
     }
    );
&#38;lt;/script&#38;gt;&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;Hemos de tener en cuenta la versión de FlowPlayer que hemos descargado en estas dos líneas&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;echo $javascript-&#38;gt;link('flowplayer/example/flowplayer-3.1.4.min');&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;y&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;&#34;&#38;lt;?php echo Router::url(&#34;/&#34;); ?&#38;gt;js/flowplayer/flowplayer-3.1.5.swf&#34;&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;que en este caso se corresponden con la versión FlowPlayer 3.1.5&#60;/p&#62;
&#60;p&#62;Lo de player1 es por si quieres meter varios videos en la misma página, con lo que el segundo pondría player2 y así sucesivamente (o lo que consideres oportuno)&#60;/p&#62;
&#60;p&#62;Además hay que añadir al css&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;.video{
	display:block;
	width:400px;
	height:300px;
}&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;FlowPlayer muestra videos que estén en formato flv. Una buena herramienta para convertir nuestros videos avi, mpeg, &#38;#8230; a este formato flv es &#60;a href=&#34;http://ffmpeg.org/&#34; target=&#34;_blank&#34; rel=&#34;nofollow&#34;&#62;ffmpeg&#60;/a&#62;.&#60;br /&#62;
Un ejemplo de uso :&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;ffmpeg -i entrada.avi  salida.flv&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;En este &#60;a title=&#34;Demostración de funcionamiento de FlowPlayer&#34; href=&#34;http://cakephp.hospedaxes.com/pruebas/mostrar_video&#34; rel=&#34;nofollow&#34;&#62;link&#60;/a&#62; podéis ver una demostración.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/mostrar-videos-con-flowplayer&#34; rel=&#34;nofollow&#34;&#62;Mostrar videos con FlowPlayer&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>Carlos en "Herencia en modelos"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/herencia-en-modelos#post-136</link>
<pubDate>Vie, 07 May 2010 18:24:49 +0000</pubDate>
<dc:creator>Carlos</dc:creator>
<guid isPermaLink="false">136@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Antes de nada, muchas gracias por darnos la oportunidad de resolver altruístamente las dudas de los que, como yo, empezamos con este tema.&#60;/p&#62;
&#60;p&#62;He comenzado nuevamente, después de muchos años fuera de la programación, con un proyecto pendiente. El caso es que he practicado y he logrado hacer alguna aplicacioncilla humilde tipo CRUD sin problema y evitando utilizar cake bake para irme enterando de cómo van las cosas ahora. Tengo varios defectos de base y es en ellos en los que haré hincapié de momento.&#60;/p&#62;
&#60;p&#62;El primero de los obstáculos que me he encontrado es el siguiente:&#60;br /&#62;
Tenía un modelo Atleta, un modelo Organizator(de eventos) y un modelo Responsable(de club) con sus correspondientes relaciones entre ellas y con otros modelos como pueden ser: Club o Evento. El caso es que he pensado que quizá no esté del todo correcto, que quizá tiene más sentido un modelo Persona que sea extendido por Atleta, Organizator y Responsable. Se me ocurre alguna otra opción como que Persona hABTM Perfil, en donde Atleta, Organizator y Responsable son los únicos 3 registros de la tabla perfiles pero no me gusta mucho. No sé exactamente cómo plantear la vista con el formulario ni el método para &#38;quot;añadir&#38;quot;, ni en qué controlador ubicar ese método &#38;quot;añadir&#38;quot;... Estuve leyendo que hay un par de estrategias para las tablas: simple tabla o CTI pero no sé cuál elegir y cómo afectaría esa elección al controlador y a los métodos. &#60;/p&#62;
&#60;p&#62;En resumidas cuentas, que no sé cómo funciona la herencia en los modelos y tampoco sé si merece la pena meterme en esos asuntos. Con toda la información que he encontrado, simplemente he logrado saber (y no tengo la seguridad de que todo esté correcto) que el modelo que hereda ha de extender al modelo padre, que se ha de crear la var $actAs e igualarla a &#38;#39;Inheritable&#38;#39;. Que se han de iniciar los arrays a vacío en la clase que hereda y poco más.&#60;/p&#62;
&#60;p&#62;A lo mejor es una pregunta muy extensa en el enunciado y en la respuesta. En todo caso muchas gracias por adelantado.
&#60;/p&#62;
</description>
</item>
<item>
<title>yurito en "error al cargar una aplicacion en cakephp"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/error-al-cargar-una-aplicacion-en-cakephp#post-133</link>
<pubDate>Dom, 02 May 2010 09:12:12 +0000</pubDate>
<dc:creator>yurito</dc:creator>
<guid isPermaLink="false">133@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;hola amigos todos del sitio.&#60;br /&#62;
bueno soy nuevo en este lugar y lo encontre buscando algo sobre cakephp y a tambien so nuevo eneste framework  es el primer framework que utilizo. bueno para comenzar a ver su funcionamiento comenze descargando una aplicacion realizada en cakephp y lo puse en ejecucion, pero tengo algunos problemas, lo que sucede es que el cake lo tengo instalado en windows seven, con mysql y appserv.la carptea cake lo tengo en esta direcciob c:/AppServ/ y la aplicacion de prueba ya realizada lo tengo en c:/AppServ/prueba y al momento de cargar la aplicacion en la Url me arroja este error.&#60;/p&#62;
&#60;p&#62;Warning: include(cake\bootstrap.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\visitas\webroot\index.php  on line 91&#60;/p&#62;
&#60;p&#62;Warning: include() [function.include]: Failed opening &#38;#39;cake\bootstrap.php&#38;#39; for inclusion (include_path=&#38;#39;C:\AppServ\www\cake;C:\AppServ\www\visitas\;.;C:\php5\pear&#38;#39;) in C:\AppServ\www\visitas\webroot\index.php on line 91&#60;/p&#62;
&#60;p&#62;Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your \cake core directory and your \vendors root directory. in C:\AppServ\www\visitas\webroot\index.php on line 92&#60;/p&#62;
&#60;p&#62;haber si alguien me da una luz.&#60;br /&#62;
agradesco de antemano
&#60;/p&#62;
</description>
</item>
<item>
<title>nuria en "Lanzada la versión 1.3.0 estable de CakePHP"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/lanzada-la-version-130-estable-de-cakephp#post-130</link>
<pubDate>Lun, 26 Apr 2010 07:11:32 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">130@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;Después de la publicación el viernes pasado del lanzamiento de la versión 1.2.7, el sábado los desarrolladores de CakePHP &#60;a title=&#34;Anuncio oficial del lanzamiento de CakePHP 1.3.0 estable&#34; href=&#34;http://bakery.cakephp.org/articles/view/announcing-cakephp-1-3-0-stable&#34;&#62;anunciaban&#60;/a&#62; la nueva y esperada versión estable 1.3.0. En el propio anuncio en la bakery tenéis enlaces para conocer cómo realizar la &#60;a title=&#34;Migrar CakePHP desde versiones 1.2 a 1.3&#34; href=&#34;http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3&#34;&#62;migración desde versiones 1.2 a la 1.3&#60;/a&#62;, las &#60;a title=&#34;Nuevas funcionalidades de CakePHP 1.3&#34; href=&#34;http://book.cakephp.org/view/1572/New-features-in-CakePHP-1-3&#34;&#62;nuevas funcionalidades&#60;/a&#62; añadidas, el &#60;a title=&#34;Changelog 1.3&#34; href=&#34;http://cakephp.lighthouseapp.com/projects/42648/changelog-1-3-0&#34;&#62;changelog&#60;/a&#62; y, por supuesto, el &#60;a title=&#34;Página de descarga de la versión 1.3 de CakePHP&#34; href=&#34;http://github.com/cakephp/cakephp1x/downloads&#34;&#62;enlace de descarga&#60;/a&#62;.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/lanzada-la-version-1-3-0-estable-de-cakephp&#34;&#62;Lanzada la versión 1.3.0 estable de CakePHP&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>nuria en "Lanzamiento de la versión 1.2.7 de CakePHP"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/lanzamiento-de-la-version-127-de-cakephp#post-129</link>
<pubDate>Vie, 23 Apr 2010 07:26:22 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">129@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;A la espera de que salga la versión 1.3 final de CakePHP (ya han lanzado la RC4), ayer han anunciado en su web la &#60;a title=&#34;Lanzamiento de CakePHP 1.2.7&#34; href=&#34;http://bakery.cakephp.org/articles/view/cakephp-1-2-7-released&#34;&#62;publicación de la versión 1.2.7&#60;/a&#62;. Como se puede ver en el &#60;a title=&#34;Changelog CakePHP 1.2.7&#34; href=&#34;http://cakephp.lighthouseapp.com/projects/42648/changelog-1-2-7&#34;&#62;changelog&#60;/a&#62;, en esta nueva versión han corregido varios bugs (en concreto han cerrado 36 tickets); uno de ellos se refiere a un parche de seguridad en el test suite, no excesivamente importante porque sólo era un problema cuando el debug estaba activado, por lo que en producción no se produciría. Si queremos corregir este error en una versión previa de CakePHP sin actualizarla, podemos encontrar la solución en este &#60;a title=&#34;Corrección bug de seguridad en TestSuite&#34; href=&#34;http://bin.cakephp.org/view/1459556460&#34;&#62;parche&#60;/a&#62;.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/lanzamiento-version-1-2-7-cakephp&#34;&#62;Lanzamiento de la versión 1.2.7 de CakePHP&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>veimar en "Como agrego imagenes en cakePHP"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/como-agrego-imagenes-en-cakephp#post-127</link>
<pubDate>Jue, 22 Apr 2010 15:51:01 +0000</pubDate>
<dc:creator>veimar</dc:creator>
<guid isPermaLink="false">127@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Como van compañeros quisiera que me ayuden, quiero aparte de almacenar datos como nombre, ciudad, etc, pueda ingresar una imagen. Me podrian ayudar compañeros &#60;/p&#62;
&#60;p&#62;Bueno se les agradecera cualquier ayuda hasta luego
&#60;/p&#62;
</description>
</item>
<item>
<title>nuria en "CakePHP Queue Plugin"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/cakephp-queue-plugin#post-125</link>
<pubDate>Jue, 22 Apr 2010 07:50:37 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">125@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;Después de más tiempo del que nos gustaría sin poder escribir nada (por falta de tiempo, no porque no haya multitud de temas interesantes que tratar acerca de &#60;a title=&#34;CakePHP&#34; href=&#34;http://cakephp.org/&#34;&#62;Cake&#60;/a&#62;), hemos encontrado un plugin que debemos explicar, pues resulta verdaderamente interesante en casi cualquier &#60;a title=&#34;Hospedaxes&#34; href=&#34;http://www.hospedaxes.com&#34;&#62;proyecto de desarrollo&#60;/a&#62;, ¿quién no estaría interesado en integrar en su web una cola de tareas que permita ir realizándolas de manera progresiva sin perjudicar el rendimiento del sitio? Este comportamiento nos lo proporciona el plugin &#60;a title=&#34;CakePHP Queue Plugin&#34; href=&#34;http://github.com/MSeven/cakephp_queue&#34;&#62;CakePHP Queue Plugin&#60;/a&#62; y resulta muy interesante, sobre todo, para tareas de envío de correo. Podríamos optar por utilizar un cron para realizar estas tareas, este plugin plantea prácticamente la misma idea con un desarrollo verdaderamente sencillo y múltiples opciones de configuración muy útiles.&#60;/p&#62;
&#60;p&#62;Seguiremos la explicación que proporciona &#60;a title=&#34;MSeven&#34; href=&#34;http://github.com/MSeven&#34;&#62;MSeven&#60;/a&#62; en su web para ir comentando paso a paso cómo utilizar este plugin:&#60;/p&#62;
&#60;p&#62;&#60;strong&#62;1. Instalación&#60;/strong&#62;&#60;/p&#62;
&#60;p&#62;* Copiamos los ficheros proporcionados en la carpeta plugins&#60;/p&#62;
&#60;p&#62;* Ejecutamos el siguiente comando desde la consola de CakePHP (en &#60;em&#62;/cake/console&#60;/em&#62;/):&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;cake schema run create -path plugins/queue/config/sql -name queue&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;&#60;strong&#62;2. Configuración:&#60;/strong&#62;&#60;/p&#62;
&#60;p&#62;El plugin nos permite añadir un archivo de configuración personalizado (&#60;em&#62;app/config/queue.php&#60;/em&#62;), que tendrá el siguiente formato:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;// Tiempo de espera cuando no se encuentra una tarea que ejecutar
$config['queue']['sleeptime'] = 1;

// Probabilidad (en %) de que se limpie una tarea antigua
$config['queue']['gcprop'] = 5;

// Timeout por defecto en que el shell espera por la ejecución de un trabajo
$config['queue']['defaultworkertimeout'] = 120;

// Número de reintentos si el trabajo falla o se ha alcanzado el timeout
$config['queue']['defaultworkerretries'] = 4;

// Tiempo (en segundos) después de que el shell ha terminado (0 = ilimitado)
$config['queue']['workermaxruntime'] = 0;

// Tiempo (en segundos) después de que los trabajos completados se eliminen de la base de datos
$config['queue']['cleanuptimeout'] = 3600;&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;&#60;strong&#62;3. Uso&#60;/strong&#62;&#60;/p&#62;
&#60;p&#62;Desde comando podemos utilizar el plugin para llevar a cabo determinadas acciones:&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62;&#60;strong&#62;Help&#60;/strong&#62;: para mostrar un mensaje de ayuda
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;cake queue help&#60;/code&#62;&#60;/pre&#62;
&#60;/li&#62;
&#60;li&#62;&#60;strong&#62;Add&#60;/strong&#62;: intenta llamar a la función add() de una tarea, pues podría pasar que las tareas no permitan esta posibilidad.
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;cake queue add &#38;lt;taskname&#38;gt;&#60;/code&#62;&#60;/pre&#62;
&#60;/li&#62;
&#60;li&#62;&#60;strong&#62;Runworker&#60;/strong&#62;: ejecuta un proceso  que comprueba la cola y ejecuta las tareas pendientes, eliminando las que hayan caducado.
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;cake queue runworker&#60;/code&#62;&#60;/pre&#62;
&#60;/li&#62;
&#60;/ul&#62;
&#60;p&#62;&#60;strong&#62;4. Tareas Instaladas&#60;/strong&#62;&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62;&#60;strong&#62;QueueEmail&#60;/strong&#62;: tarea para insertar en la cola un email que se enviará utilizando el &#60;a title=&#34;CakePHP API: Email Component&#34; href=&#34;http://api.cakephp.org/class/email-component&#34;&#62;EmailComponent&#60;/a&#62; de CakePHP.&#60;/li&#62;
&#60;/ul&#62;
&#60;p&#62;Podríamos crear nuestras propias tareas siguiendo la guía que se encuentra en el archivo &#60;em&#62;cakephp_queue/vendors/shells/tasks/queue_example.php&#60;/em&#62;. Nosotros hemos adaptado, por ejemplo, la tarea &#60;em&#62;queue_email.php&#60;/em&#62; para utilizar un componente distinto de envío de correo que mejora su funcionamiento y proporciona más opciones de configuración.&#60;/p&#62;
&#60;p&#62;&#60;strong&#62;5. Uso&#60;/strong&#62;&#60;/p&#62;
&#60;p&#62;5.1 Añadir al modelo &#60;em&#62;Queue.QueuedTask&#60;/em&#62; la lista de modelos que se van a utilizar&#60;/p&#62;
&#60;p&#62;5.2 Crear los datos que se le van a pasar al email, será un array con la siguiente estructura:&#60;/p&#62;
&#60;p&#62;* &#60;em&#62;Settings&#60;/em&#62;: todas las opciones de configuración de envío del email.&#60;/p&#62;
&#60;p&#62;* &#60;em&#62;Vars&#60;/em&#62;: variables que se pasarán a la vista. La propia tarea se encargará de hacer un set, los sets realizados en la función del controlador no los tendrá en cuenta.&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;array (
   'settings' =&#38;gt;
      array (
        'to' =&#38;gt; null,&#60;/code&#62;&#60;code&#62;        &#60;/code&#62;&#60;code&#62;'subject' =&#38;gt; null,
        'charset' =&#38;gt; 'UTF-8',
        'from' =&#38;gt; null,
        'sendAs' =&#38;gt; 'html',
        'template' =&#38;gt; null,
        'debug' =&#38;gt; false,
        'additionalParams' =&#38;gt; '',
        'layout' =&#38;gt; 'default'
),
'vars' =&#38;gt;
   array (
   ),
);&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;&#60;em&#62;Ejemplo:&#60;/em&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;$email_data = array (
   'settings' =&#38;gt;
      array (
        'attachments' =&#38;gt; [fichero_adjunto],
        'from' =&#38;gt; [email_origen],
        'layout' =&#38;gt; [layout],
        'subject' =&#38;gt; [asunto],
        'template' =&#38;gt; [template],
        'to' =&#38;gt; [destinatario],
),
'vars' =&#38;gt;
   array (
      'asunto' =&#38;gt; [asunto],
      'contenido' =&#38;gt; [contenido],
      ... // Podríamos incluir tantas variables como consideremos necesario
      'fullBaseUrl' =&#38;gt; FULL_BASE_URL, // Utilizaremos esta variable pues si utilizamos la propia de Cake en el template nos devolverá la ruta de la consola, no la de la aplicación
   ),
);&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;3. Llamamos a la función que añade la tarea a la cola&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;&#60;code&#62;$this-&#38;gt;QueuedTask-&#38;gt;createJob('email', $email_data);&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;Ahora únicamente nos quedaría llamar al &#60;em&#62;Runkworker&#60;/em&#62; como se comentó anteriormente y ya tendremos nuestra cola de tareas funcionando.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/cakephp-queue-plugin&#34;&#62;CakePHP Queue Plugin&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>Anónimo en "Manejo de informacion cifrada"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/manejo-de-informacion-cifrada#post-118</link>
<pubDate>Lun, 12 Apr 2010 13:05:58 +0000</pubDate>
<dc:creator>Anónimo</dc:creator>
<guid isPermaLink="false">118@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Hola:&#60;br /&#62;
 Estoy estudiando informatica y me han mandado un trabajo sobre este framework.&#60;br /&#62;
Quisiera saber si alguine me puede ayudar estoy buscando informacion a cerla del manejo de la información cifrada con cakephp, y tambien el manejo de la seguridad en aplicaciones Web y en el acceso a Bases de Datos.&#60;br /&#62;
espero me puedan ayudar con esto saludos
&#60;/p&#62;
</description>
</item>
<item>
<title>bernal en "Actualizar el contenido de un select con ajax."</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/actualizar-el-contenido-de-un-select-con-ajax#post-11</link>
<pubDate>Lun, 06 Jul 2009 09:34:42 +0000</pubDate>
<dc:creator>bernal</dc:creator>
<guid isPermaLink="false">11@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;En esta entrada vamos a explicar como asociar dos selects mediante ajax y al modificar el elemento seleccionado en uno de ellos  cambie el contenido del otro.&#60;/p&#62;
&#60;p&#62;Podemos ver el ejemplo de funcionamiento &#60;a href=&#34;http://www.hospedaxes.com/blog-cakephp/pruebas&#34; target=&#34;_blank&#34;&#62;aquí.&#60;/a&#62;&#60;/p&#62;
&#60;p&#62;Un ejemplo muy claro para esta situación sería dos selects, uno con provincias y el otro con localidades, lo que queremos es que al cambiar de provincia varíe la lista de localidades y muestre las que están en la provincia seleccionada.&#60;/p&#62;
&#60;p&#62;Lo haremos utilizando el ajaxHelper, para que no sea necesario la recarga de la página y quede más atractivo.&#60;/p&#62;
&#60;p&#62;Lo primero que haremos será definir los modelos de provincias ,localidades y un tercer modelo en el que usaremos los selects, por ejemplo podría ser un modelo de cliente, en el que al insertar un nuevo cliente tendríamos que elegir la provincia y localidad a la que pertenece.&#60;/p&#62;
&#60;h1&#62;&#60;span style=&#34;text-decoration: underline;&#34;&#62;Modelos&#60;/span&#62;&#60;/h1&#62;
&#60;p&#62;&#60;strong&#62;Modelo de provincia.&#60;/strong&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/models/provincia.php

class Provincia extends AppModel
{
    var $name = 'Provincia';
}&#60;/pre&#62;
&#60;p&#62;&#60;strong&#62;Modelo de localidad.&#60;/strong&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/models/localidade.php

class Localidade extends AppModel
{
    var $name = 'localidade';
}&#60;/pre&#62;
&#60;p&#62;&#60;strong&#62;Modelo de cliente.&#60;/strong&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/models/cliente.php

class Cliente extends AppModel
{
    var $name = 'Cliente';
}&#60;/pre&#62;
&#60;h1&#62;&#60;span style=&#34;text-decoration: underline;&#34;&#62;Controladores&#60;/span&#62;&#60;/h1&#62;
&#60;p&#62;Después de esto tendremos que definir los controladores.&#60;/p&#62;
&#60;p&#62;&#60;strong&#62;Controlador de localidad.&#60;/strong&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/controllers/localidades_controller.php

class LocalidadesController extends AppController
{
	var $name = 'Localidades';
}&#60;/pre&#62;
&#60;p&#62;&#60;strong&#62;Controlador de provincia.&#60;/strong&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/controllers/provincias_controller.php

class ProvinciasController extends AppController
{
	var $name = 'Provincias';
}&#60;/pre&#62;
&#60;p&#62;Y por últino el controlador de clientes que será el que implementará la funcionalidad.&#60;/p&#62;
&#60;p&#62;&#60;strong&#62;Controlador de cliente.&#60;/strong&#62;&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/controllers/clientes_controller.php

class ClientesController extends AppController
{
	var $name = 'Clientes';
	var $helpers = array('Ajax');
	var $uses = array('Cliente','Provincia','Localidade');

	function insertar()
	{
		$listadoProvincias = $this-&#62;Provincia-&#62;find('all', array('fields'=&#62;array('id','nombre'),'order'=&#62;'nombre ASC'));
		$this-&#62;set('provincias', Set::combine($listadoProvincias, &#34;{n}.Provincia.id&#34;,&#34;{n}.Provincia.nombre&#34;));
		$primera_provincia = $this-&#62;Provincia-&#62;find(null,null,'nombre ASC');
		$listadoLocalidades = $this-&#62;Localidade-&#62;find('all', array('fields'=&#62;array('id','nombre'),'order'=&#62;'nombre ASC','conditions'=&#62;'Localidade.provincia_id='.$primera_provincia['Provincia']['id']));
		$this-&#62;set('localidades', Set::combine($listadoLocalidades, &#34;{n}.Localidade.id&#34;,&#34;{n}.Localidade.nombre&#34;));

		// RESTO DE LA FUNCIONALIDAD DE INSERCIÓN DE CLIENTES
	}

	function update_select()
	{
		if (!empty($this-&#62;data['Localidade']['provincia_id']))
		{
			$provincia_id = $this-&#62;data['Localidade']['provincia_id'];
			$localidades = $this-&#62;Localidade-&#62;find('all', array('fields'=&#62;array('id','nombre'),'order'=&#62;'nombre ASC','conditions'=&#62;array('provincia_id'=&#62;$provincia_id)));
		}
		else
		{
			$localidades = $this-&#62;Localidade-&#62;find('all', array('fields'=&#62;array('id','nombre'),'order'=&#62;'nombre ASC'));
		}
		$this-&#62;set('options', Set::combine($localidades, &#34;{n}.Localidade.id&#34;,&#34;{n}.Localidade.nombre&#34;));
		$this-&#62;render('/elements/update_select', 'ajax');
	}
}&#60;/pre&#62;
&#60;p&#62;Por un lado tenemos la &#60;strong&#62;función insertar&#60;/strong&#62;, que será una función genérica de inserción de clientes. La parte que a nosotros nos interesa es en la que se inicializan las variables que después utilizaremos en los selects, estas deberán ser arrays en los que cada elemento tenda un identificador y su valor, para que el select pueda utilizarlos en la vista.&#60;/p&#62;
&#60;p&#62;En la versión 1.1 de cakephp, esto se podía hacer mediante la función generateList del modelo, función que se ha eliminado en la 1.2.&#60;br /&#62;
Por ello ahora es necesario hacerlo en dos pasos, por un lado realizar la búsqueda con un findAll y después utilizar la función combine de la clase Set que genera un array con la estructura deseada, que será el que le pasemos a la vista.&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;$listadoProvincias = $this-&#62;Provincia-&#62;find('all', array('fields'=&#62;array('id','nombre'),'order'=&#62;'nombre ASC'));
$this-&#62;set('provincias', Set::combine($listadoProvincias, &#34;{n}.Provincia.id&#34;,&#34;{n}.Provincia.nombre&#34;));&#60;/pre&#62;
&#60;p&#62;La segunda función &#60;strong&#62;update_select&#60;/strong&#62;, es a la que llamará el ajax para actualizar el listado de localidades a partir de un identificador de provincia.&#60;/p&#62;
&#60;p&#62;Como se puede ver en el código, la función coge el identificador de provincia del select y envía a la vista los arrays actualizados de provincias y localidades.&#60;/p&#62;
&#60;h1&#62;&#60;span style=&#34;text-decoration: underline;&#34;&#62;Vistas&#60;/span&#62;&#60;/h1&#62;
&#60;p&#62;Localidades y provincias no tendrán vistas asociadas, ya que no hay ninguna operación en el controlador.&#60;/p&#62;
&#60;p&#62;En clientes tendremos que crear la vista para la operación insertar del controlador, esta podría ser algo como esto:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/views/clientes/insertar.ctp

echo $form-&#62;create('Inscripcione',array('action'=&#62;'insertar'));
echo $form-&#62;inputs(array('legend'=&#62;'Actualizar Provincias',
		'Localidade.provincia_id' =&#62; array('label'=&#62; 'Provincia','showEmpty'=&#62;'false','id'=&#62;'provincias'),
		'Alumno.localidade_id' =&#62; array('label'=&#62; 'Localidad','showEmpty'=&#62;'false','id'=&#62;'localidades'),
			));
echo $form-&#62;end();

$options = array('url' =&#62; 'update_select','update' =&#62; 'localidades');
echo $ajax-&#62;observeField('provincias',$options);&#60;/pre&#62;
&#60;p&#62;La vista será muy sencilla, un formulario con dos selects, uno de localidades y otro de provincias y una llamada al ajaxHelper en la que se indica que cada vez que se modifique el valor del select provincias, se llame a la función update_select y actualice el select de localidades.&#60;/p&#62;
&#60;p&#62;Este select se actualizará con los valores devueltos por la vista de update_select, que lo único que hace es imprimir todos los nombres de localidades devueltos por la función del controlador.&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;/app/views/elements/update_select.ctp
if(!empty($options)) {
  foreach($options as $k =&#62; $v) {
    echo &#60;code &#62;&#34;&#38;lt;option value='$k'&#38;gt;$v&#38;lt;/option&#38;gt;&#34;;&#60;/code&#62;
  }
 }&#60;/pre&#62;
&#60;p&#62;En este enlace se puede ver un ejemplo de &#60;a href=&#34;http://www.hospedaxes.com/blog-cakephp/pruebas&#34; target=&#34;_blank&#34;&#62;funcionamiento&#60;/a&#62;.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/actualizar-el-contenido-de-un-select-con-ajax&#34;&#62;Actualizar el contenido de un select con ajax.&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>ivablan en "Guardar varios registros"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/guardar-varios-registros#post-43</link>
<pubDate>Dom, 15 Nov 2009 13:22:15 +0000</pubDate>
<dc:creator>ivablan</dc:creator>
<guid isPermaLink="false">43@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Buenas, &#60;/p&#62;
&#60;p&#62;Soy nuevo en este framework y la verdad que me esta dando unos pocos problemas. Mi principal duda es la siguiente. Estoy haciendo una aplicacion que se encarga de la matriculacion de alumnos, por lo que en la vista le muestro una lista de asignaturas, para que el alumnos elija las que se matricula. Mi problema viene porque no se como hay que hacer para poder guardar varios registros con el cakePHP de una sola vez, he probado a hacer un bucle como he visto en varios sitios de internet, pero el problema es que no se donde me guardan los datos que recoge de la vista, si estan en $this-&#38;gt;data o donde.&#60;/p&#62;
&#60;p&#62;Gracias
&#60;/p&#62;
</description>
</item>
<item>
<title>Anónimo en "Calendario en Cakephp"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/calendario-en-cakephp#post-109</link>
<pubDate>Dom, 31 Jan 2010 11:14:06 +0000</pubDate>
<dc:creator>Anónimo</dc:creator>
<guid isPermaLink="false">109@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;He intentado implementar el calendario que mostrais en vuestro foro, y no consigo hacerlo funcionar. En la modalidad picker, me aparece el icono del calendario, pero no se despliega al pinchar sobre él, y en la modalidad flat, me aparece un error de tipo Notice en el método flat del helper, indicando Notice (8): Undefined index:&#60;br /&#62;
En particular, el error está en la línea que pone $this-&#38;gt;params[&#38;#39;pass&#38;#39;][&#38;#39;0&#38;#39;].&#60;/p&#62;
&#60;p&#62;¿saben a que es debido esto?&#60;/p&#62;
&#60;p&#62;PD. Tengo Cake 1.2 y he actualizado las funciones a las indicadas, solventando los errores de sintaxis que daban.
&#60;/p&#62;
</description>
</item>
<item>
<title>marcko_23 en "Integración de FCKeditor con CakePHP"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/integracion-de-fckeditor-con-cakephp#post-107</link>
<pubDate>Mie, 27 Jan 2010 18:59:19 +0000</pubDate>
<dc:creator>marcko_23</dc:creator>
<guid isPermaLink="false">107@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;me sale un error Parse error: parse error in fck.php on line 11&#60;/p&#62;
&#60;p&#62;que es return&#38;lt;&#38;lt;&#38;lt;FCK_CODE&#60;br /&#62;
&#38;lt;script type=&#38;quot;text/javascript&#38;quot;&#38;gt;&#60;/p&#62;
&#60;p&#62;Como podemos solucionarlo
&#60;/p&#62;
</description>
</item>
<item>
<title>ivablan en "Problemas con el campo password"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/problemas-con-el-campo-password#post-103</link>
<pubDate>Mar, 12 Jan 2010 22:23:55 +0000</pubDate>
<dc:creator>ivablan</dc:creator>
<guid isPermaLink="false">103@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Buenas,&#60;/p&#62;
&#60;p&#62;Llevo unos meses haciendo una aplicación y ahora que la estamos testeando nos hemos dado cuenta de en un problema bastante considerable. El problema es que tenemos un campo password mediante el que los usuarios entran al sistema, y tenemos puesto en el modelo &#38;#39;password&#38;#39;=&#38;gt;(&#38;#39;notempty&#38;#39;), pero cuando pulsas el boton para guardar, el campo se encripta y no salta el error, por lo que se guarda un usario que tiene como contraseña un null encriptado. No se si esto os habra pasado o cual es la solucion, hemos estado leyendo y en todos los manuales usan lo mismo, entonces no sabemos muy bien como enfocar el problema.&#60;br /&#62;
Gracias de antemano.
&#60;/p&#62;
</description>
</item>
<item>
<title>ozzysong en "Containable Behavior"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/containable-behavior#post-87</link>
<pubDate>Vie, 27 Nov 2009 14:39:08 +0000</pubDate>
<dc:creator>ozzysong</dc:creator>
<guid isPermaLink="false">87@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Lo que no consigo es limitar los campos del propio modelo que estamos usando.&#60;/p&#62;
&#60;p&#62;Quizá es que no me he enterao bien &#60;img src='http://cakephp.hospedaxes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&#62; &#60;/p&#62;</description>
</item>
<item>
<title>ivablan en "Problema con una variable"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/problema-con-una-variable#post-48</link>
<pubDate>Mie, 18 Nov 2009 21:33:35 +0000</pubDate>
<dc:creator>ivablan</dc:creator>
<guid isPermaLink="false">48@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Buenas hace poco escribi acerca de una duda y ahora me ha surgido otra. He estado mirando los textos y no he encontrado la respuesta. El problema es el siguiente: Paso una variable a un controlador poniendola en el metodo redirect, y en el otro controlador la recibo sin problemas, hago una colsulta para obtener los datos mediante find y los obtengo sin problemas usando la variable que pasé, pero cuando voy a guardar los datos, no se porque la variable en la que hice la consulta se me resetea y pierde todo lo que tenia dentro, por lo que no se me guardan los datos en la base de datos. La verdad que he estado buscando y no encuentro la solucion, no se si alguien mas le habra pasado lo mismo. Gracias de ante mano.
&#60;/p&#62;
</description>
</item>
<item>
<title>bernal en "CakePHP Questions"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/cakephp-questions#post-36</link>
<pubDate>Mie, 11 Nov 2009 08:31:30 +0000</pubDate>
<dc:creator>bernal</dc:creator>
<guid isPermaLink="false">36@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;&#60;img class=&#34;size-full wp-image-285 alignleft&#34; title=&#34;cakephp_questions_logo&#34; src=&#34;http://cakephp.hospedaxes.com/wp-content/uploads/2009/11/cakephp_questions_logo.png&#34; alt=&#34;cakephp_questions_logo&#34; width=&#34;251&#34; height=&#34;105&#34; /&#62;La Cake Software Foundation, nos sorprende con un nuevo producto pensado para ayudar a toda la comunidad de su framework.&#60;/p&#62;
&#60;p&#62;Es una paǵina, llamada &#60;a href=&#34;http://cakeqs.org/&#34;&#62;cakePHP Questions&#60;/a&#62;, en la que todos los usuarios que quieran, dejarán sus dudas para que el resto de la comunidad intenten resolverlas.&#60;/p&#62;
&#60;p&#62;Es la misma idea que el grupo de &#60;a href=&#34;http://groups.google.com/group/cake-php&#34;&#62;google de cakephp&#60;/a&#62;, en funcionamiento desde hace mucho tiempo, pero adaptándolo a sus propias necesidades.&#60;/p&#62;
&#60;p&#62;La mayor parte de las dudas, por no decir todas, están en inglés, un pequeño problema para los no acostumbrados a la lengua de shakespeare. La falta de documentación en español sigue siendo uno de los grandes problemas de este framework. Por ello, desde este blog intentamos aportar nuestro granito de arena para hacer más fácil el acceso acceso a este mundo, a todos los usuarios de cake.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/cakephp-questions&#34;&#62;CakePHP Questions&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>darwin en "Como Crear un Paginador"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/como-crear-un-paginador#post-17</link>
<pubDate>Jue, 06 Aug 2009 17:31:02 +0000</pubDate>
<dc:creator>darwin</dc:creator>
<guid isPermaLink="false">17@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Hola a todos, Estoy buscando la forma de crear un paginador de modo de que los resultados obtenidos a travez de una consulta supongase 100 registros los muestre de 10 en 10 donde el usuario pueda cambiar de pagina en pagina, de antemano gracias por su ayuda.....
&#60;/p&#62;
</description>
</item>
<item>
<title>yoelkj en "listas en orden aleatorio con cakephp"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/listas-en-orden-aleatorio-con-cakephp#post-20</link>
<pubDate>Lun, 05 Oct 2009 19:14:47 +0000</pubDate>
<dc:creator>yoelkj</dc:creator>
<guid isPermaLink="false">20@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Hola.. soy nuevo en este blog y me alegra mucho haber encontrado este sitio en español.&#60;/p&#62;
&#60;p&#62;tengo dos dudas la primera es como hacer consultas que me muestren listas en orden aleatorio. al mmostrar la paginas mostrara un resutado y al actualizarla mostrara la misma lista pero en otro orden.&#60;/p&#62;
&#60;p&#62;la otra duda es acerca de las convenciones de cakephp para los modelos. tengo la tabla usuarios y una tabla usuario_amigos eh tratado de hacer una relacion de muchos a muchos pero la misma tabla usuario son amigos&#60;/p&#62;
&#60;p&#62;agradezco su atencion y su pronta ayuda... gracias.. y felicidades por el blog.. me pasare revisando los temas para no hacer preguntas repetidas .. :D gracias
&#60;/p&#62;
</description>
</item>
<item>
<title>nuria en "Tree Behaviour o cómo crear una estructura jerárquica"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/tree-behaviour-o-como-crear-una-estructura-jerarquica#post-22</link>
<pubDate>Mie, 14 Oct 2009 08:42:35 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">22@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;En esta ocasión hablaremos de cómo crear una estructura jerárquica utilizando el Tree Behavior de CakePHP. Este comportamiento facilita muchísimo las cosas a la hora de manipular árboles jerárquicos de datos.&#60;/p&#62;
&#60;p&#62;Utilizaremos también la librería de Javascript Ext JS para poder manipular el árbol gráficamente de manera sencilla, utilizando &#60;em&#62;drag and drop&#60;/em&#62;.&#60;/p&#62;
&#60;p&#62;Lo primero que tendremos que hacer será añadir en la tabla de la base de datos de la entidad. Utilizando los nombres por defecto de Cake, serían los siguientes campos:&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62;parent_id: hace referencia al padre del elemento.&#60;/li&#62;
&#60;li&#62;lft: almacena el identificador del elemento de la izquierda en el mismo nivel.&#60;/li&#62;
&#60;li&#62;rght: almacena el identificador del elemento de la derecha en el mismo nivel.&#60;/li&#62;
&#60;/ul&#62;
&#60;p&#62;Incluiremos también los campos &#60;em&#62;id&#60;/em&#62; y &#60;em&#62;nombre&#60;/em&#62;, en una entidad denominada, por ejemplo, Categoria.&#60;/p&#62;
&#60;p&#62;El modelo lo haríamos de la siguiente manera:&#60;/p&#62;
&#60;p&#62;Este comportamiento tiene funciones muy útiles para la manipulación del árbol. Las más utilizadas quizás sean las siguientes:&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62;children: devuelve los hijos de un nodo concreto, pudiendo seleccionar si deseamos obtener sólo los hijos directos o todos los hijos en el árbol.&#60;/li&#62;
&#60;li&#62;generatetreelist: función muy útil para obtener los elementos a introducir en un select de HTML.&#60;/li&#62;
&#60;li&#62;getpath: devuelve todo el path hasta el nodo especificado en un array.&#60;/li&#62;
&#60;li&#62;movedown y moveup: sirven para bajar o subir un nivel de un nodo del árbol.&#60;/li&#62;
&#60;li&#62;removefromtree: elimina un nodo del árbol sin perder la estructura, es decir, modificando el padre de sus hijos.&#60;/li&#62;
&#60;li&#62;reorder: reordena un nodo (arrastrando también a sus hijos) en función de los parámetros especificados.&#60;/li&#62;
&#60;/ul&#62;
&#60;p&#62;Para realizar la manipulación visual del árbol de categorías crearemos las siguientes funciones en el controlador &#60;em&#62;app/controllers/categorias_controller.php&#60;/em&#62; sería:&#60;/p&#62;
&#60;pre class=&#34;http://cakephp.hospedaxes.co/wp-admin/prettyprint&#34;&#62;&#60;code&#62;&#38;lt;?php

class CategoriasController extends AppController{

var $helpers = array( 'Javascript');

// Función para organizar las categorías
function organizar() {}

function getnodes() {
   Configure::write('debug', 0);
   // obtener el identificador del padre que se envío por POST vía Ajax
   $parent = intval($this-&#38;gt;params['form']['node']);
   // encontrar los hijos directos del nodo anterior
   $nodes = $this-&#38;gt;Categoria-&#38;gt;children($parent, true, null, 'Categoria.lft ASC');

   $this-&#38;gt;set(compact('nodes'));

   $this-&#38;gt;render('getnodes', 'ajax');
}

function reorder()
{
   Configure::write('debug', 0);

   // delta es la diferencia en la posición (1 = nodo siguiente, -1 = nod anterior)
   $node = intval($this-&#38;gt;params['form']['node']);
   $delta = intval($this-&#38;gt;params['form']['delta']);

   if ($delta &#38;gt; 0) {
      $this-&#38;gt;Categoria-&#38;gt;movedown($node, abs($delta));
   } elseif ($delta &#38;lt; 0) {
      $this-&#38;gt;Categoria-&#38;gt;moveup($node, abs($delta));
   }

   exit('1');
}

function reparent()
{
   Configure::write('debug', 0);

   $node = intval($this-&#38;gt;params['form']['node']);
   $parent = intval($this-&#38;gt;params['form']['parent']);
   $position = intval($this-&#38;gt;params['form']['position']);

   // guardamos el nuevo padre de la categoría
   $this-&#38;gt;Categoria-&#38;gt;id = $node;
   $this-&#38;gt;Categoria-&#38;gt;saveField('parent_id', $parent);

   // Si position == 0, nos movemos al inicio.
   // En otro caso, calculamos la distancia que nos moveremos ($delta).
   if ($position == 0) {
      $this-&#38;gt;Categoria-&#38;gt;moveup($node, true);
   } else {
      $count = $this-&#38;gt;Categoria-&#38;gt;childcount($parent, true);
      $delta = $count - $position - 1;
      if ($delta &#38;gt; 0) {
         $this-&#38;gt;Categoria-&#38;gt;moveup($node, $delta);
      }
   }

   exit('1');
}
}
?&#38;gt;&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;Sólo nos quedaría hacer las vistas. En este caso, necesitamos crear 2 vistas: organizar.ctp y getnodes.ctp.&#60;/p&#62;
&#60;pre class=&#34;http://cakephp.hospedaxes.co/wp-admin/prettyprint&#34;&#62;// app/views/categorias/organizar.ctp

&#60;?php echo $html-&#62;css('/js/ext-2.0.1/resources/css/ext-custom.css'); ?&#62;
&#60;?php echo $javascript-&#62;link('/js/ext-2.0.1/ext-custom.js'); ?&#62;

&#60;script type=&#34;http://cakephp.hospedaxes.co/wp-admin/text/javascript&#34;&#62;
Ext.BLANK_IMAGE_URL = '&#60;?php echo $html-&#62;url('/js/ext-2.0.1/resources/images/default/s.gif') ?&#62;';

Ext.onReady(function(){

   var getnodesUrl = '&#60;?php echo $html-&#62;url('/categorias/getnodes') ?&#62;';
   var reorderUrl = '&#60;?php echo $html-&#62;url('/categorias/reorder') ?&#62;';
   var reparentUrl = '&#60;?php echo $html-&#62;url('/categorias/reparent') ?&#62;';

   var Tree = Ext.tree;

   var tree = new Tree.TreePanel({
      el:'tree-div',
      autoScroll:true,
      animate:true,
      enableDD:true,
      containerScroll: true,
      rootVisible: true,
      loader: new Ext.tree.TreeLoader({
         dataUrl:getnodesUrl
      })
    });

   var root = new Tree.AsyncTreeNode({
      text:'Categorías',
      draggable:false,
      id:'root'
   });

   tree.setRootNode(root);
   tree.setHeight('auto');

   var oldPosition = null;
   var oldNextSibling = null;

   tree.on('startdrag', function(tree, node, event){
      oldPosition = node.parentNode.indexOf(node);
      oldNextSibling = node.nextSibling;
   });

   tree.on('movenode', function(tree, node, oldParent, newParent, position){

   if (oldParent == newParent){
      var url = reorderUrl;
      var params = {'node':node.id, 'delta':(position-oldPosition)};
   } else {
      var url = reparentUrl;
      var params = {'node':node.id, 'parent':newParent.id, 'position':position};
   }

tree.disable();

Ext.Ajax.request({
   url:url,
   params:params,
   success:function(response, request) {
      // if the first char of our response is zero, then we fail the operation,
      // otherwise we re-enable the tree
      if (response.responseText.charAt(0) != 1){
         request.failure();
      } else {
         tree.enable();
      }
   },
   failure:function() {
      // we move the node back to where it was beforehand and
      // we suspendEvents() so that we don't get stuck in a possible infinite loop
      tree.suspendEvents();
      oldParent.appendChild(node);
      if (oldNextSibling){
         oldParent.insertBefore(node, oldNextSibling);
      }
      tree.resumeEvents();
      tree.enable();
      alert(&#34;Oh no! Your changes could not be saved!&#34;);
   }
});
});

tree.render();
root.expand();
});
&#60;/script&#62;
&#60;div id=&#34;tree-div&#34;&#62;&#60;/div&#62;
&#60;/pre&#62;
&#60;p&#62;Y la última vista:&#60;/p&#62;
&#60;pre class=&#34;http://cakephp.hospedaxes.co/wp-admin/prettyprint&#34;&#62;&#60;code&#62;&#38;lt;?php
// app/views/categorias/getnodes.ctp
$data = array();
foreach ($nodes as $node)
{&#60;/code&#62;   &#60;code&#62;$data[] = array(&#60;/code&#62;      &#60;code&#62;&#34;text&#34; =&#38;gt; $node['Categoria']['nombre'],&#60;/code&#62;      &#60;code&#62;&#34;id&#34; =&#38;gt; $node['Categoria']['id']&#60;/code&#62;   &#60;code&#62;);
}
echo $javascript-&#38;gt;object($data);
?&#38;gt;&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;Ya sólo nos quedaría descargarnos la librería &#60;a title=&#34;http://cakephp.hospedaxes.co/wp-admin/Ext JS&#34; href=&#34;http://www.extjs.com/&#34; target=&#34;_blank&#34;&#62;ExtJS&#60;/a&#62; y copiarla en la carpeta /app/webroot/js. En el ejemplo, se ha utilizado la versión 2.0.1.&#60;/p&#62;
&#60;p&#62;Podemos ver una &#60;a title=&#34;http://cakephp.hospedaxes.co/wp-admin/Ejemplo de funcionamiento de Tree Behaviour&#34; href=&#34;http://cakephp.hospedaxes.com/pruebas/tree_behaviour&#34; target=&#34;_blank&#34;&#62;demostración de su funcionamiento&#60;/a&#62;.&#60;/p&#62;
&#60;div id=&#34;_mcePaste&#34; style=&#34;overflow: hidden; position: absolute; left: -10000px; top: 289px; width: 1px; height: 1px;&#34;&#62;
&#60;pre style=&#34;display: block;&#34;&#62;Categoria&#60;/pre&#62;
&#60;/div&#62;
&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/tree-behaviour-o-como-crear-una-estructura-jerarquica&#34;&#62;Tree Behaviour o cómo crear una estructura jerárquica&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>nuria en "Nuevas versiones de CakePHP"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/nuevas-versiones-de-cakephp#post-16</link>
<pubDate>Mie, 05 Aug 2009 08:47:33 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">16@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;El lunes 3 de agosto se anunciaba en la página web de &#60;a title=&#34;Release: CakePHP 1.2.4.8284&#34; href=&#34;http://bakery.cakephp.org/articles/view/release-cakephp-1-2-4-8284&#34; target=&#34;_blank&#34;&#62;CakePHP&#60;/a&#62; el lanzamiento de dos nuevas versiones: la versión estable de la release 1.2.4.8284, podemos ver el &#60;a title=&#34;http://cakephp.hospedaxes.co/wp-admin/Changelog 1.2.4.8284&#34; href=&#34;https://trac.cakephp.org/wiki/changelog/1.2.x.x/8284&#34; target=&#34;_blank&#34;&#62;changelog&#60;/a&#62; para conocer los bugs corregidos, y la versión 1.3.0, todavía en desarrollo.&#60;/p&#62;
&#60;p&#62;Los cambios más importantes introducidos en la versión 1.3.0 son:&#60;/p&#62;
&#60;ul&#62;
&#60;li&#62;compatibilidad con PHP 5.3&#60;/li&#62;
&#60;li&#62;nuevo helper de javascript incluyendo soporte para múltiples librerías js&#60;/li&#62;
&#60;li&#62;mejora de la generación de código automática con mejor soporte para plugins y templates.&#60;/li&#62;
&#60;/ul&#62;
&#60;p&#62;Ahora mismo estamos metidos de lleno en la utilización de plugins, así que nos alegramos mucho de que le den importancia a esta línea de desarrollo. En cuanto tengamos un poquito de tiempo y las ideas totalmente claras, escribiremos una entrada referente a este tema.&#60;/p&#62;
&#60;div id=&#34;attachment_230&#34; class=&#34;http://cakephp.hospedaxes.co/wp-admin/wp-caption aligncenter&#34; style=&#34;width: 248px&#34;&#62;&#60;a href=&#34;http://www.cakephp.org&#34;&#62;&#60;img class=&#34;http://cakephp.hospedaxes.co/wp-admin/size-full wp-image-230&#34; title=&#34;http://cakephp.hospedaxes.co/wp-admin/cakephp12&#34; src=&#34;http://cakephp.hospedaxes.com/wp-content/uploads/2009/08/cakephp12.png&#34; alt=&#34;CakePHP 1.2&#34; width=&#34;http://cakephp.hospedaxes.co/wp-admin/238&#34; height=&#34;240&#34; /&#62;&#60;/a&#62;&#60;p class=&#34;http://cakephp.hospedaxes.co/wp-admin/wp-caption-text&#34;&#62;CakePHP 1.2&#60;/p&#62;&#60;/div&#62;
&#60;div id=&#34;_mcePaste&#34; style=&#34;overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;&#34;&#62;
&#60;h3&#62;1.2.4.8284&#60;/h3&#62;
&#60;/div&#62;
&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/nuevas-versiones-de-cakephp&#34;&#62;Nuevas versiones de CakePHP&#60;/a&#62;&#60;/p&#62;</description>
</item>
<item>
<title>nuria en "CakePHP debug kit"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/cakephp-debug-kit#post-15</link>
<pubDate>Mar, 04 Aug 2009 10:13:36 +0000</pubDate>
<dc:creator>nuria</dc:creator>
<guid isPermaLink="false">15@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;Nos han preguntado en varias ocasiones cómo hacemos para debuggear las aplicaciones desarrolladas con &#60;a href=&#34;&#38;quot;//cakephp.org/&#38;quot;&#38;quot;&#34;&#62;CakePHP&#60;/a&#62;. Hemos probado, sin meternos a fondo, la utilización de &#60;a href=&#34;&#38;quot;//www.eclipse.org/&#38;quot;&#38;quot;&#34;&#62;Eclipse&#60;/a&#62;+&#60;a href=&#34;&#38;quot;//xdebug.org/&#38;quot;&#38;quot;&#34;&#62;XDebug&#60;/a&#62;, pero todavía no hemos obtenido resultados satisfactorios, por lo que hasta ahora seguíamos utilizando el debug de CakePHP, al que estamos muy acostumbrados y que nos resulta fácil y cómodo.&#60;br /&#62;
Hemos encontrado una herramienta de debug que se basa en esta idea, pero que nos muestra las variables de una manera más cómoda y visualmente más atractiva. Se trata del plugin &#60;a href=&#34;&#38;quot;//www.ohloh.net/p/cakephp-debugkit&#38;quot;&#38;quot;&#34;&#62;CakePHP debug kit&#60;/a&#62;. Lo podéis bajar directamente de la web y, por tratarse de un plugin, su instalación es verdaderamente sencilla.&#60;br /&#62;
Podéis ver una demostración en la sección de &#60;a href=&#34;&#38;quot;//cakephp.hospedaxes.com/pruebas/&#38;quot;&#38;quot;&#34;&#62;ejemplos&#60;/a&#62;. En la esquina superior derecha existe un botón que nos permite mostrar/ocultar el debug:&#60;/p&#62;
&#60;p&#62;Podemos observar el historial de peticiones anteriores, las variables de la sesión, de la request y de la vista, información de log y estadísticas de memoria utilizada y tiempo de petición.&#60;/p&#62;
&#60;/blockquote&#62;
&#60;p&#62;&#60;a href=&#34;&#38;quot;//cakephp.hospedaxes.com/cakephp-debug-kit&#38;quot;&#38;quot;&#34;&#62;CakePHP debug kit&#60;/a&#62;
&#60;/p&#62;
</description>
</item>
<item>
<title>Anónimo en "Filtro en un comboBox"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/filtro-en-un-combobox#post-7</link>
<pubDate>Jue, 25 Jun 2009 19:03:14 +0000</pubDate>
<dc:creator>Anónimo</dc:creator>
<guid isPermaLink="false">7@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;p&#62;Hola, la cosa es asi, tengo paises cada pais tienes varias ciudades, y al llenar un formulario y elegir en un comboBox el pais,  se desplieguen todas la ciudades de ese pais , y no como lo tengo ahora que muestra siempre todas las ciudades que tengo en la base de datos.&#60;br /&#62;
Espero sus ayudas o alguna pista de como empezar a hacerlo.
&#60;/p&#62;
</description>
</item>
<item>
<title>bernal en "Utilizar cakephp sin base de datos"</title>
<link>http://cakephp.hospedaxes.com/dudas/topic/utilizar-cakephp-sin-base-de-datos-2#post-10</link>
<pubDate>Vie, 03 Jul 2009 16:29:08 +0000</pubDate>
<dc:creator>bernal</dc:creator>
<guid isPermaLink="false">10@http://cakephp.hospedaxes.com/dudas/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;Hay ocasiones en las que se puede dar que nos enfrentemos a un proyecto que no necesita tener una base de datos asociada, bien porque es un proyecto sencillo, bien porque no requiere tener datos almacenados o simplemente porque el servidor en el que vamos a alojar la aplicación no dispone de una base de datos.&#60;br /&#62;
Esta razón no deberá ser un impedimento para seguir utilizando cakephp, con unos pequeños cambios podremos seguir usándolo normalmente.&#60;/p&#62;
&#60;p&#62;En primer lugar tendremos que crear un nuevo datasource, estos ficheros van almacenados en el directorio &#38;#8220;/app/models/datasources/dbo/&#38;#8221;, será un fichero php cuyo nombre comience por dbo_, en nuestro caso lo llamaremos &#38;#8220;dbo_mi_dbo.php&#38;#8221;.&#60;/p&#62;
&#60;p&#62;Tendrá el siguiente contenido:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;
class DboMiDbo extends DboSource
{
	function connect()
	{
		$this-&#62;connected = true;
		return $this-&#62;connected;
	}
	function disconnect()
	{
		$this-&#62;connected = false;
		return !$this-&#62;connected;
	}
}
&#60;/pre&#62;
&#60;p&#62;Después de esto tendremos que cambiar el driver de la base de datos utilizada por nuestro proyecto cakephp, por defecto mysql. Para esto, en el archivo database.php que se encuentra en &#38;#8220;/app/config/&#38;#8221;, modificamos la variable $default, debería quedar así:&#60;/p&#62;
&#60;pre class=&#34;prettyprint&#34;&#62;
var $default = array(
		'driver' =&#62; 'mi_dbo',
		'persistent' =&#62; false,
		'host' =&#62; '',
		'port' =&#62; '',
		'login' =&#62; '',
		'password' =&#62; '',
		'database' =&#62; '',
		'schema' =&#62; '',
		'prefix' =&#62; '',
		'encoding' =&#62; ''
	);
&#60;/pre&#62;
&#60;p&#62;Por último, en todos los modelos que creemos, tendremos que añadir la línea &#38;#8220;&#60;strong&#62;&#60;em&#62;var $useTable = false;&#60;/em&#62;&#60;/strong&#62;&#38;#8220;, para indicarle que ese modelo no va a tener una tabla asociada.&#60;/p&#62;
&#60;p&#62;A partir de aquí podremos utilizar toda la potencia de cakephp sin preocuparnos de tener una base de datos instalada.&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;&#60;br/&#62;&#60;a href=&#34;http://cakephp.hospedaxes.com/utilizar-cakephp-sin-base-de-datos&#34;&#62;Utilizar cakephp sin base de datos&#60;/a&#62;&#60;/p&#62;</description>
</item>

</channel>
</rss>
