shadowwolfone Posted June 6, 2014 Share Posted June 6, 2014 (edited) Hola a todos, como están. Haber si alguien por favor me puede ayudar a entender este problema. Estoy tratando de entender el sistema de smarty y siguiendo varios tutoriales he logrado crear una pagina que me muestre una variable simple "Hola Mundo", al probarle funciona. El problema radica en que si le cambio el nombre a las variables esta deja de funcionar y me muestra el siguiente error: Notice: Undefined index: yo in /var/www/html/catalogotaski/cache/smarty/compile/e6/cb/f7/e6cbf75943a02de230a0b60130534a62a3d68628.file.chorizos.tpl.php on line 39Notice: Trying to get property of non-object in /var/www/html/catalogotaski/cache/smarty/compile/e6/cb/f7/e6cbf75943a02de230a0b60130534a62a3d68628.file.chorizos.tpl.php on line 39 este es el codigo del php: <?php class Prueba2ControllerCore extends FrontController { public function process() { parent::process(); //definimos la variable que queremos mostrar $yo = "Que ondaaaaa"; //declaramos las variables para smarty self::$smarty->assign(array( 'yo' => $yo )); } public function displayContent() { parent::displayContent(); //definimos el tpl que muestra la página self::$smarty->display(_PS_THEME_DIR_.'chorizos.tpl'); } } Y este el tpl: {capture name=path}{l s='Prueba'}{/capture} {include file="$tpl_dir./breadcrumb.tpl"} <h1>{l s='Prueba'}</h1> <!--mostramos nuestra variable--> <p>{$yo}</p> Como pueden ver declaro la variable yo y lo envio al tpl igual. De esta forma me sale el error pero si enves de yo le pongo mivariable funciona correctamente. Codigo original: <?php class Prueba2ControllerCore extends FrontController { public function process() { parent::process(); //definimos la variable que queremos mostrar $mivariable = "Que ondaaaaa"; //declaramos las variables para smarty self::$smarty->assign(array( 'mivariable' => $mivariable )); } public function displayContent() { parent::displayContent(); //definimos el tpl que muestra la página self::$smarty->display(_PS_THEME_DIR_.'chorizos.tpl'); } } tpl: {capture name=path}{l s='Prueba'}{/capture} {include file="$tpl_dir./breadcrumb.tpl"} <h1>{l s='Prueba'}</h1> <!--mostramos nuestra variable--> <p>{$mivariable}</p> Alguien me puede ayudar ya que debo realizar una consulta a la base de datos y mostrarla en la pagina y no se porque me sale ese error solo cambiando el nombre de las variable. Ayuda por favor. Gracias. Edited June 6, 2014 by shadowwolfone (see edit history) Link to comment Share on other sites More sharing options...
Rolige Posted June 6, 2014 Share Posted June 6, 2014 Y ya probaste a poner otro nombre que no sea "yo" ? Link to comment Share on other sites More sharing options...
shadowwolfone Posted June 6, 2014 Author Share Posted June 6, 2014 Hola cotoko, Si probe con varios nombres y solo cuando pongo "mivariable" funciona con los demás sale ese error. Link to comment Share on other sites More sharing options...
shadowwolfone Posted June 6, 2014 Author Share Posted June 6, 2014 Ya le encontré el problema, jeje era un problema de escritura del ftp no me estaba guardando los cambios, jeje. Pero ya que estoy aquí quisiera hacerles una pregunta tengo una consulta sql, esta funciona pero como puedo hacer para mostrar los datos en el tpl?. public function saldos() { parent::saldos(); $cart2=4; $id_category2=11; //EJECUTAR SENTENCIA SQL QUE PERMITE VERIFICAR LOS MONTOS CONSUMIDOS $sql ="SELECT C.name As categoria, D.sv_monto As Monto_Maximo, SUM(A.quantity) As Cantidad_Productos, SUM(A.quantity * B.price) as valor_compra, (D.sv_monto - SUM(A.quantity * B.price)) AS Saldo, A.id_cart, A.id_product, A.id_address_delivery, A.date_add, B.id_category_default, B.price FROM ps_cart_product as A, ps_product as B, ps_category_lang as C, sv_address_categories as D WHERE (A.id_product = B.id_product) and (B.id_category_default = C.id_category and C.id_lang = 2) and (D.sv_categories_id = C.id_category and B.id_category_default = D.sv_categories_id) and A.id_cart = '.$cart2' and D.sv_address_id = '$id_category2' GROUP BY C.name"; $query = mysql_fetch_assoc($sql); // Imprimir los resultados en HTML $x=0; while ($row = mysql_fetch_array($query)) { $saldos[$x]=array($col['categoria'], $col['Monto_Maximo'], $col['Cantidad_Productos'], $col['valor_compra'], $col['Saldo']); $x++; } self::$smarty->assign(array('saldos' => $saldos)); // Cerrar la conexión mysql_close(); } Con este si me sale el error que indique anteriormente, no se si esta mal la consulta o el while, alguien me podría ayudar. Gracias. Link to comment Share on other sites More sharing options...
Rolige Posted June 6, 2014 Share Posted June 6, 2014 Primero que nada si ya resolviste el problema de este tema deberias editarlo y agregar la palabra (solucionado) al inicio y abrir un nuevo hilo para el nuevo problema, esas son las reglas del foro. En cuanto a tu cuestion, lo primero es verificar que la sentencia SQL sea correcta y que arroje lo que esperas, para ello lo puedes probar en phpMyAdmin y lo segundo es que para conectarte a base de datos en prestashop no deberias hacerlo asi porque prestashop ya incluye sus funciones personalizadas, puedes ver los ejemplos en el enlace: http://doc.prestashop.com/display/PS15/DB+class+best+practices Link to comment Share on other sites More sharing options...
shadowwolfone Posted June 6, 2014 Author Share Posted June 6, 2014 Gracias cotoko. estoy haciendo unas pruebas sobre la consulta cualquier duda creare otro post si no encuentro la solución. Link to comment Share on other sites More sharing options...
Recommended Posts