| Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar] |
|
WWW \ CakePHP: Bloques en el layout Este artículo ha sido consultado en 1,266 ocasiones. Nivel en CakePHP: inicial. Este tutorial ilustra como resolver una cuestión que todos los novatos encontramos en CakePHP: como poblar el layout (template) de la página con información de diferentes tablas en diferentes lugares del layout. Bien, supongamos que tenemos la tabla entries en postgresql, sqlite, firebird o mysql: -- entries in the users blogs Para manejar esta tabla en CakePHP necesito el modelo Entry: <?php // esto debe coincidir con los NOT NULL de la tabla el controlador EntriesController: <?php y la vista: <?php Como vemos en el controlador, estamos usando el layout blog.thtml: <html> <table> <tr><td style="width:30%;vertical-align:top;padding:10px;" id="left"> </td> <td style="width:70%;vertical-align:top;padding:10px;" id="main"> <tr><td colspan="2">El Footer</td></tr> Este layout no debe ser tomado muy en serio, tan sólo deseo usarlo para ilustrar el problema, todo nuestro proceso MVC de la tabla entries será colocado en <?php echo $content_for_layout ?>, es decir en la columna "main" de la tabla. ¿Pero qué pasa si deseo más contenido en otras zonas del layout? Por ejemplo si tengo, una tabla "sections": CREATE TABLE sections { y deseo colocar su contenido en la columna "left" del layout, ¿cómo puedo hacerlo? Fácil!! el secreto está en usar elements, que son pequeñas extensiones de las vistas. La tabla sections no tiene nada que ver con entries de modo que para utilizar sections desde del controlador EntriesController debemos usar: loadModel('Section'); para cargar el modelo de sections. De modo que el controlador queda así: <? $this->Section = new Section; // inicializo el modelo "externo" } Ahora creamos nuestro element: Archivo: app/view/elements/sections.thtml <div class="titles">Sections</div> $p = count($sections); Y llamamos al element desde el layout: <html> <table> <tr><td style="width:30%;vertical-align:top;padding:10px;" id="left"> <?php ?> <td style="width:70%;vertical-align:top;padding:10px;" id="main"> <tr><td colspan="2">El Footer</td></tr> Y eso es todo!! Obviamente podemos crear todos los elements que necesitemos para colocarlos en nuestro template. CakePHP rulezzzz!!! Última actualización: 2007-04-29 10:56:59-05 |
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: |