Hace unas semanas escribía un post sobre la intrépida hazaña que me disponía a realizar: integrar smarty en cakephp. Tarea que tampoco es tan complicada ya que hay un buen manual en la web oficial. Si queréis verlo este es el link: the Bakery: smarty + cakePHP, pero es algo que realmente no recomienzo que hagáis. El problema no viene por la integración sino porque no hay mucha documentación e integrar los helpers, components,y demás script que hay desarrollados es casi imposible porque muchos están obsoletos o no están hechos para las plantillas de SMARTY y es imposible adaptarlos. Después unas semanas desarrollando el código me he tenido que parar y preguntar a otros programadores de cakephp para tener algo de feedback y otras opiniones: Cakephp en Español grupo en Google y en la web oficial de cakephp…la gente no tiene ni idea. Escribí una pregunta hace un tiempo y la gente no sabe/no contesta…. http://bakery.cakephp.org/articles/view/smarty-view-for-1-2#comment-5031 Uno de los desarrolladores principales de cakephp en la web oficial me comenta lo siguiente: “CakePHP is awesome. I’ve never used SMARTY, but I’ve heard of some people integrating it. My ajax validation component was never completely finished and uses deprecated methods. I really [...]
Los array que te devuelve CakePHP después de usar un método como Paginate() o FindAll() son multidimensionales y los que uséis SMARTY y paséis directamente el resultado del array al tpl os puede venir bien usar varios foreach encadenados para tratar la información del array. {foreach from=$test key="key1" item="val1"} {foreach from=$val1 key="key2" item="val2"} {foreach from=$val2 key="key3" item="val3"} … {/foreach} {/foreach} {/foreach}
Voy a suponer que ya habéis instalado el framework. Los pasos para integrar SMARTY son: 1. Descargar una versión de la clase de SmartyView aquí: http://cakeforge.org/snippet/detail.php?type=snippet&id=6 y guardar la clase de SmartyView en /(app)/views/smarty.php 2. Descargar SMARTY y copiar todo el contenido de la carpeta libs y pegarlo en /(app)/vendor/smarty/ 3. Crear las carpetas “smarty/compile” y “smarty/cache” en el directorio /(app)/tmp y darle permisos (777) 4. Crea tu propio app_controller.php en la carpeta /(app)/controllers/app_controller.php <? class AppController extends Controller { var $view = ‘Smarty’; //var $helpers = array(‘SmartyHtml’,'SmartySession’,'form’); de momento no voy a usar los helpers de smarty } ?> 5. He creado un controlador de ejemplo: /(app)/controllers/prueba_controller.php <? class PruebaController extends AppController{ var $uses = null; // para no usar tablas function index() { // Esta era mi gran duda, como asignar las variables de php a smarty , pues se hace así: $this->set(‘prueba’, ‘Hola Mundo’); } } ?> 6. Mi vista de ejemplo usando SMARTY. /(app)/views/prueba/index.tpl {$prueba} // esto pintará: Hola Mundo El siguiente paso es entender el funcionamiento de los Helpers e instalar los Helpers compatibles con SMARTY.