Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Asignar variables POST a smarty

Estas en el tema de Asignar variables POST a smarty en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola! Estoy haciendo una web que utilice smarty. Sé hacerlo con PHP, pero no con plantillas, y mi duda es ¿no puedo hacer esto?: Código ...
  #1 (permalink)  
Antiguo 14/05/2008, 10:20
Avatar de scout_vlc  
Fecha de Ingreso: julio-2007
Ubicación: Valencia
Mensajes: 141
Antigüedad: 16 años, 10 meses
Puntos: 0
Asignar variables POST a smarty

Hola!

Estoy haciendo una web que utilice smarty. Sé hacerlo con PHP, pero no con plantillas, y mi duda es ¿no puedo hacer esto?:

Código PHP:
$smarty.post.page('numero''$numero'); 
o esto ??
Código PHP:
$smarty->assign('numero''$numero'); 
o sino esto:
Código PHP:
$smarty->assign('clave''$_POST['clave']'); 
Por que quiero, tras enviar uin formulario, salgan los datos enviados, como una página de confirmación.
¿Cómo puedo asignar a una variable smarty, el valor de una varible de POST?
Muchas gracias

Àlex
  #2 (permalink)  
Antiguo 14/05/2008, 10:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Asignar variables POST a smarty

Lo mejor seria la tercera opción, pero debes de pasar la variable así:
Código PHP:
$smarty->assign('clave'$_POST['clave']; 
Saludos.
  #3 (permalink)  
Antiguo 15/05/2008, 04:40
Avatar de scout_vlc  
Fecha de Ingreso: julio-2007
Ubicación: Valencia
Mensajes: 141
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Asignar variables POST a smarty

Hola,
me da este error, al enviar el formulario :

Fatal error: Call to undefined function page() in C:\wamp\www\discos\entradas\confirm.php on line 58


confirm.php

Código PHP:
<?php 

$smarty
.post.page('numero'$_POST['numero']); //esta es la linea 58
$smarty->assign('clave'$_POST['clave']);  
$smarty->assign('numero'$_POST['$numero']);
$smarty->assign('nomcd'$_POST['nomcd']);
$smarty->assign('pvp'$_POST['pvp']);
$smarty->assign('nomcia'$_POST['nomcia']);
$smarty->assign('cant'$_POST['cant']);

$smarty->display('confirm.tpl');

?>
  #4 (permalink)  
Antiguo 15/05/2008, 09:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Asignar variables POST a smarty

Tienes un error de sintaxis, ya que no puedes hacer eso que pones de $smarty.post.page, los objetos con PHP se acceden con ->, o si son estáticos los accesas con ::.

Saludos.
  #5 (permalink)  
Antiguo 15/05/2008, 09:59
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 16 años
Puntos: 0
Re: Asignar variables POST a smarty

Me da la impresion de que tienes otro error a la hora de pasar $numero

Lo estas haciendo asi:

$smarty->assign('numero', '$numero');

Debes pasar $numero sin las comillas simples, asi:

$smarty->assign('numero', $numero);
  #6 (permalink)  
Antiguo 16/05/2008, 02:57
Avatar de scout_vlc  
Fecha de Ingreso: julio-2007
Ubicación: Valencia
Mensajes: 141
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Asignar variables POST a smarty

Me estoy volviendo loco....porque ahora me da el siguiente error:

Fatal error: Call to a member function assign() on a non-object in C:\wamp\www\discos\entradas\confirm.php on line 76

El código que tengo es:


Código PHP:
$clave  $_GET['clave'];
$numero $_GET['numero'];
$nomcd  $_GET['nomcd'];
$pvp    $_GET['pvp'];
$nomcia $_GET['nomcia'];
$cant   $_GET['cant'];


$smarty->assign('clave'$clave);
$smarty->assign('numero'$numero);
$smarty->assign('nomcd'$nomcd);
$smarty->assign('pvp'$pvp); 

Pero lo mismo cuando he usado POST:

Código PHP:
$smarty.post.page('numero'$_POST['numero']);
$smarty->assign('clave'$_POST['clave']);  
$smarty->assign('numero'$_POST['$numero']);
$smarty->assign('nomcd'$_POST['nomcd']);
$smarty->assign('pvp'$_POST['pvp']);
$smarty->assign('nomcia'$_POST['nomcia']);
$smarty->assign('cant'$_POST['cant']); 
  #7 (permalink)  
Antiguo 16/05/2008, 08:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Asignar variables POST a smarty

Comprueba que hayas iniciado el objeto $smarty, y como te comento, debes de estudiar la sintaxis de PHP, antes de empezar a programar, ya que el código que pones en: $smarty.post.page es incorrecto, así no es la forma correcta de llamar a un método de un objeto.

Saludos.
  #8 (permalink)  
Antiguo 23/05/2008, 06:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 16 años
Puntos: 0
Respuesta: Asignar variables POST a smarty

Para resolver tu problema debes hacer esto:

Crea dentro del directorio de smarty un fichero que se llame smarty.inc que contenga lo siguiente:

Código PHP:
<?php 
    
include('libs/Smarty.class.php');
    
    class 
CustomSmarty extends Smarty{

       
//Constructor
       
public function __construct($config_path)
       {
             
parent::__construct();
             
$this->template_dir $config_path 'smarty/templates/';
             
$this->compile_dir $config_path 'smarty/templates_c/';
             
$this->config_dir $config_path 'smarty/conf/';
             
$this->cache_dir $config_path 'smarty/cache/';
             
$this->compile_check true;   
       }
     }
?>
Luego en el script en el que estas capturando los valores que vienen por GET haces lo siguiente:

Nota: Entre los parentesis de CustomSmarty() tienes que pasar la ruta hasta la raiz del sitio. Por ejemplo, si te encuentras en index.php no necesitas pasar ninguna ruta pq aqui ya estas en la raiz del sitio. En ese caso quedaria asi:


Código PHP:
include('smarty/smarty.inc');
$smarty = new CustomSmarty('');

$clave  $_GET['clave'];
$numero $_GET['numero'];
$nomcd  $_GET['nomcd'];
$pvp    $_GET['pvp'];
$nomcia $_GET['nomcia'];
$cant   $_GET['cant'];


$smarty->assign('clave'$clave);
$smarty->assign('numero'$numero);
$smarty->assign('nomcd'$nomcd);
$smarty->assign('pvp'$pvp); 
Salu2s y espero que te sirva.

Última edición por krasburn; 23/05/2008 a las 06:46
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:37.