• Publicidad

Problema con CGI::Application y Formbuilder

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Problema con CGI::Application y Formbuilder

Notapor danimera » 2009-03-02 12:27 @560

Este es mi código de un procedimiento que llamo con CGI::Application:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub inmobiliaria{

    use CGI::FormBuilder;
    my $self = shift;
    my $error = shift;
    my $datos =$self->query();
    my $template;
    my $form;
    my $pague;


        $form = CGI::FormBuilder->new(
             name =>  'controladorFORM',
             method => 'post',
             #template => 'templates/sitio/inmobiliaria.html',    # Modelo ruta 1
             template => $self->load_tmpl('sitio/inmobiliaria.html)', # Modelo ruta 2
             type => 'HTML'

        );


       my @ciudades = ('Cali',
        'Bogota',
                    'Medellin',
                    'Barranquilla'
           );


         $form->field(name => 'ciudad',

                options => \@ciudades,
                value => "param('plan')"
         );


if ($form->submitted && $form->validate) {
    # update our database and redirect them to the next page

} else {
   # $pague= $form->render;
    $pague = $form->render(template => 'templates/sitio/inmobiliaria.html');
}

return $pague;

}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Pero resulta que si utilizo en la creación del formulario template => 'templates/sitio/inmobiliaria.html no me incluye otras plantillas porque toma las rutas relativas a no sé qué ?¿? :? y sale este error:

Código: Seleccionar todo
There has been an error: HTML::Template->new() : Cannot open included file sitio/menu.html : file not found. at modulos/HTML/Template.pm line 2021.


Y si utilizo template => $self->load_tmpl('sitio/inmobiliaria.html') pues me sale este error:

Código: Seleccionar todo
There has been an error: [FormBuilder] Fatal: Unsupported operand to 'template' option - must be \%hash, \&sub, or $object w/ render() at modulos/bitacora.pm line 163


y lo que pasa es que mis directorios son así:
Código: Seleccionar todo
webroot/ index.pl # llama al módulo
webroot/modulos/bitacora.pm # módulo que contiene el método que llama el formulario
webroot/templates/sitios/ # están mis templates
webroot/conf/bitacora.cfg


Y pues creo que esa es la confusión porque en mi archivo de configuración tengo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$cfg{user} ='danixxx';
$cfg{password} ='onixxx';
$cfg{dsn} ='dbi:mysql:database=hacienda_hacienda:host=localhost';
$cfg{template_path} ='templates/';
\%cfg;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pues lo que quiero es cómo puedo resolver ese problema sin cambiar mi estructura de directorio.
uso CGI::Application::Plugin::ConfigAuto.
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

Notapor explorer » 2009-03-02 16:26 @727

El primer error es porque no encuentra la plantilla, claro. Lo que puedes hacer es, un momento antes, pintar el valor del camino actual, con Cwd. Así sabrás dónde estás. Yo sospecho que es webroot/modulos/.

El segundo error, creo que es porque template => espera un objeto HTML::Template (en el caso de que realmente quieras pasarle un objeto en lugar del nombre del fichero de la plantilla). Y creo que, aunque load_tmpl() sí devuelve ese tipo de objetos, le pasa lo mismo que al anterior: no encuentra la plantilla.

Podrías probar a poner direcciones absolutas (las que empiezan por /).
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

Notapor danimera » 2009-03-02 18:55 @830

Hummm, sí, probé las direcciones absolutas y mira, con Cwd, y pues, la ruta que me pinta es webroot/ así que el problema lo solucioné modificando los <TMPL_INCLUDE NAME="">.

Problema solucionado.
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 Avanzado

¿Quién está conectado?

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