Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2007, 12:25
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Mostrar misma Vista con Smarty(MVC)

Bueno estoy haciendo un carrito de compras con el uso de AJAX, php y mysql; todo bajo MVC, ya casi esta todo ..
Controller del carrito(metodo que agrega un producto):
Código PHP:
protected function addLogic(){
                        
/*Llamamos al modelo para que busque en la DB  y  cheque si existe
                         * el idProducto y lo agregue a la session[items]
                         */
                        
$_query= new manageDB("mysql","root","XXx","localhost","prueba");
                        
$rowsFound=$_query->searchById($this->idProducto);
                        if(
$rowsFound != false){
                             
$manage= new Carrito();
                             
$manage->add($this->idProducto);
                            
$productos=$manage->cesta();
                            
$this->setProducts($productos);
                         }
                        else{
                            
$this->saveMsg("Ese producto no se encuentra en la DB [mal parametro]","msgProductos");
                        }    
                } 
Bueno en el controller principal por el cual pasan las llamadas... verifico si llego algun idcontroller, si no llego nada , asumo que es index, entonces llamo a la vista y muestro la pagina principal.
Código PHP:
public function _default(){                        
$this->Smarty->assign("hayProductos",true);
$this->Smarty->assign("productos",$this->arrayProducts);
$this->Smarty->display($_SERVER[DOCUMENT_ROOT]."/php/application/carrito/vista/templates/index.tpl.html");
 } 
Este es el metodo de la vista que se encarga de recibir los productos y renderearlos:
Código PHP:
public function showProducts($arrayProducts){
if(
is_array($arrayProducts))
{                                                
$this->idProductos=$arrayProducts;
$this->Smarty->assign("hayProductos",true);
$this->Smarty->assign("productos",$arrayProducts);
$this->Smarty->display($_SERVER[DOCUMENT_ROOT]."/php/application/carrito/vista/templates/index.tpl.html");
}    
                          

EL problema es si el usuario ya agrego productos a la canasta, y supongamos que modifica la direccion, y ahora ya no llega ningun controller, entonces cuando muestro el index, no me salen los productos que habia agregado... osea ,solo salen cuando llamo al controlador del carrito que se encarga de sumar productos dependiendo de los parametros.
Ej de url que si muestra los productos:
Código HTML:
http://localhost/php/application/carrito/?idc=contCarrito&action=addLogic&idp=10
y si modifica la url a esta:
Código HTML:
http://localhost/php/application/carrito/
solo me muestra el diseño, pero no las variables.
el tpl:
Código HTML:
<html>
<head>


<style  type="text/css" media="screen">
	
	@import  url(vista/css/carro.css);
	
</style>


</head>
<body>


<div id='header'>

</div>

<div id='header2'>

</div>
	<h2>Productos </h2>
<div class='Contenedor'>
	
</div>
{$Index}


{$errores}



<div>
<p>
	
     {if $hayProductos}
	La canasta contiene: <br />
	{ foreach from = $productos  item = curr_id}    
		{$curr_id} <br />
	{/foreach}
	
     { /if }	

</p>
</div>
<div id="mensajes" >
	{if $msgProductos}
		{$msgProductos} <br />
	{/if}
</div>




</body>
</html>



Lo correcto seria que si estoy en index.php, me mostrara la canasta(siendo que ya agregue productos).
Espero haberme explicado
gracias de antemano
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.

Última edición por B**; 01/03/2007 a las 13:24