• Publicidad

Problema de sesión llamada desde una clase

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Problema de sesión llamada desde una clase

Notapor danimera » 2010-10-28 10:15 @468

Creé un módulo llamado PerlEasyCar

Es simple
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package PerlEasyCart;
  2.  
  3. use strict;
  4. use warnings;
  5. use CGI::Session;
  6.  
  7.  
  8. our $VERSION = '0.01000_13';
  9.  
  10.  
  11. my $session = new CGI::Session();
  12. use vars qw($VERSION @EXPORT);
  13.  
  14. require Exporter;
  15.  
  16. @EXPORT = qw(
  17.         addItem
  18.         items
  19. );
  20.  
  21. sub new{
  22.  
  23.         my ($class, @args) = @_;
  24.         my $self = {};
  25.         bless  $self, $class;
  26.         return $self;
  27. }
  28.  
  29.  
  30.  
  31.  
  32. sub addItem{
  33.  
  34.         my ( $self, $id, $cantidad ) = @_;
  35.     #my $hash = $session->param('productos');
  36.     #$hash->{$id} = $cantidad;
  37.  
  38.     $session->param('prd-'.$id,$cantidad);
  39.  
  40.  
  41.     $session->flush();
  42.     return 1;
  43.  
  44. }
  45.  
  46. sub items{
  47.         my $it = $session->param('id');
  48.         return $it;
  49. }
  50.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y lo llamo desde un script pero no me actualiza la session cuando lo llamo desde mi otro script.

Básicamente la línea esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub addProducto{
  2.  
  3.     $self = new CGI;
  4.     my $cart = new PerlEasyCart;
  5.         $template = HTML::Template->new(filename => 'admin/plugins/ShoppingCart/templates/confirmacion-compra.tmpl');
  6.  
  7.     $session->param('prd-'.$q->param('id-producto'), '4');
  8.     $cart->addItem("prd-".$q->param('id-producto'),'1');
  9.  
  10.     $template->param(COMFIRMARCOMPRA => 1);
  11.  
  12.     return $template->output;
  13.  
  14. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


$session->param('prd-$q->param('id-producto')', '4'); si me agrega el producto a la session, pero $cart->addItem("prd-".$q->param('id-producto'),'1'); no lo hace...

La verdad, tengo una solución, pero no me queda tan claro porque el de pasar esto, no soy bueno digamos en trabajar con mis propios módulos en Perl, ya que rara vez toca hacer uno, siempre existe uno mejor, ¡ja,ja,ja! ^^

Luego otra función llamo y hago un Dumper:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub cerrarSession{
  2.  
  3.         #$session->delete();
  4.     #$session->flush();
  5.     #$session->param('productos', "sdsdsdsdsds");
  6.     return "<pre>". Dumper $session;
  7. }
  8.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Bueno, cabe decir que antes del script que llama el módulo PerlEasyCart tengo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package ShoppingCart;
  2.  
  3. use Data::Dumper;
  4. use CGI::FormBuilder;
  5. use Config::Auto;
  6. use Data::Pagination;
  7. use CGI::Session;
  8.  
  9. use PerlEasyCart;
  10.  
  11. $q = new CGI;
  12.  
  13. my $cfg;
  14. my $dbh;
  15. my $session =  new CGI::Session();
  16.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por danimera el 2010-10-28 11:46 @532, editado 1 vez en total
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Re: Problema de sesión llamada desde una clase

Notapor explorer » 2010-10-28 11:20 @513

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$session->param('prd-$q->param('id-producto')', '4');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

es un error sintáctico... fíjate que incluso el coloreado de sintaxis de Perl en este mensaje intenta colorear el estropicio de comillas simples que tienes puesto.

No sé muy bien cómo Perl interpretará 'prd-$q->param('id-producto')' pero creo que no muy bien...

Recuerda: si pones algo con entrecomillado simple, Perl no lo interpreta, así que 'prd-$q->param(' es justamente eso (Perl no ve a $q como un objeto a quien llamar al método param()).

use strict;
use warnings;
use diagnostics;


...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema de sesión llamada desde una clase

Notapor danimera » 2010-10-28 11:25 @517

Cometí un error, realmente en mi código la línea está correcta; algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    $session->param('prd-788', '1');
    $cart->addItem("prd-".$q->param('id-producto'),'1');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


De todas maneras el problema no radica en agregar a $session, si no cuando lo uso desde $cart->addItem... Éste es quien no me agrega nada a la session...
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados