perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier ...@ice-sa.com>
Subject Re: Custom Object-Oriented Module using HTML::Template
Date Thu, 13 Mar 2008 15:38:43 GMT
Hi.

First, don't take my suggestions as gospel, I don't know the TT2 and do 
not really know how you're supposed to work with it.
But it seems to me that this is in the wrong order :

     $view->mainpage;
     $self->content_type('text/html');

I think you should trigger the HTTP header before you generate the 
content.  Now, whether that is the reason of your current problem or 
not, I haven't a clue.

But I'm trying, and I'm really interested, because I am starting to want 
to know more about TT2 (and Catalyst) these days.  So your 
"from-the-very beginning" approach is also very helpful to me.
(And I do have a certain experience of Apache2/mod_perl2)

And, re-check your lwp-request switches, you might have disabled the 
display of the response content (remove the -d).

André



xyon wrote:
> Thanks for the reply.
> 
> I thought as you did (that there were too many "Content-Type"
> definitions), so commented out this line in the View.pm module, but that
> doesn't seem to have changed anything:
> 
> 'print "Content-Type: text/html\n\n";'
> 
> 
> 
> 
> Here is the lwp command and output:
> -------------------------------------------------------------------
> $ lwp-request -e -S -s -U -m GET -Sed "http://localhost/admin/"
> GET http://localhost/admin/
> User-Agent: lwp-request/2.07
> 
> GET http://localhost/admin/ --> 200 OK
> Connection: close
> Date: Thu, 13 Mar 2008 15:24:23 GMT
> Server: Apache
> Content-Length: 0
> Content-Type: text/html; charset=UTF-8
> Client-Date: Thu, 13 Mar 2008 15:24:23 GMT
> Client-Peer: 127.0.0.1:80
> Client-Response-Num: 1
> -------------------------------------------------------------------
> 
> 
> On Thu, 2008-03-13 at 16:11 +0100, André Warnier wrote:
>> Hi.
>>
>> First, a small disgression : along with perl, comes a beautiful test 
>> tool for HTTP stuff, called "lwp-request".
>> Like, at the command-line :
>> lwp-request  (to see the options)
>> lwp-request -m GET -Sed "http://myserver/myURL"
>> (that will show you what you get as a response, without a browser 
>> getting in the way)
>>
>> Then, below, are you not now sending one "Content-type" too many ?
>> It looks like you are doing it once in handler(), and once in mainpage().
>>
>> André
>>
>> xyon wrote:
>>> That worked great with the test script ( print $template->output; ), but
>>> unfortunately, I'm having trouble getting the display onto a web page
>>> (via the Handler). The resulting web page is blank, with no source.
>>>
>>>
>>> Below are my Apache configs for the handler, logs, and the handler and
>>> view module's latest code. I've also included the test script code, just
>>> in case there is some obvious reason it would work and the handler
>>> won't.
>>>
>>>
>>>
>>>
>>> Apache config:
>>> ----------------------------------------------------
>>> PerlRequire /etc/httpd/perl/startup.pl
>>> <Location /admin>
>>>     SetHandler modperl 
>>>     PerlResponseHandler Myserver::Handler
>>> </Location>
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> /etc/httpd/perl/startup.pl:
>>> ----------------------------------------------------
>>> use lib qw(/home/Perl/);
>>> 1;
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> Apache log:
>>> ----------------------------------------------------
>>> ==> /var/log/httpd/error_log <==
>>> ### HTML::Template Debug ### In _parse:
>>> ### HTML::Template _param Stack Dump ###
>>>
>>> $VAR1 = [
>>>           \'<html><body bgcolor="#FF00FF">Test!</body></html>
>>> '
>>>         ];
>>>
>>> ### HTML::Template Debug ### In output
>>> ### HTML::Template output Stack Dump ###
>>>
>>> $VAR1 = [
>>>           \'<html><body bgcolor="#FF00FF">Test!</body></html>
>>> '
>>>         ];
>>>
>>>
>>> ==> /var/log/httpd/ssl_request_log <==
>>> [13/Mar/2008:10:48:38 -0400] 10.5.5.5 TLSv1 DHE-RSA-AES256-SHA
>>> "GET /admin/ HTTP/1.1" -
>>>
>>> ==> /var/log/httpd/ssl_access_log <==
>>> 10.5.5.5 - - [13/Mar/2008:10:48:38 -0400] "GET /admin/ HTTP/1.1" 200 -
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> /home/Perl/Myserver/Handler.pm
>>> ----------------------------------------------------
>>> package Myserver::Handler;
>>>
>>> #Setup some essentials
>>> use strict;         #strict tolerance for code
>>> use Carp;           #debugging
>>> use diagnostics;    #more debugging
>>> use warnings;       #more debugging
>>>
>>> #Handler-related stuff
>>> use Apache2::RequestRec ();
>>> use Apache2::RequestIO ();
>>> use Apache2::Const -compile => qw(OK);
>>>
>>> sub handler {
>>>     my $self        = shift;
>>>     
>>>     my $view        = Myserver::View->new();
>>>     $view->mainpage;
>>>
>>>     # Obligatory stuff for the handler
>>>     $self->content_type('text/html');
>>>     return Apache2::Const::OK;
>>>
>>> }
>>>
>>> 1;
>>>
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> /home/Perl/Myserver/View.pm:
>>> ----------------------------------------------------
>>> package Myserver::View;
>>>
>>> #Setup some essentials
>>> use strict;         #strict tolerance for code
>>> use Carp;           #debugging
>>> use diagnostics;    #more debugging
>>> use warnings;       #more debugging
>>>
>>> #Loadup some needed functions
>>> use HTML::Template;
>>>
>>> sub new {
>>>     my $self        = shift;
>>>     return $self;
>>> }
>>>
>>> sub mainpage {
>>>     my $self        = shift;
>>>     my $template    = HTML::Template->new(
>>> 		filename => '/home/Perl/tmpl/mainpage.tmpl',
>>>                 cache => 1,
>>>                 debug => 1,
>>>                 stack_debug => 1 );
>>>     print "Content-Type: text/html\n\n";
>>>     print $template->output;
>>>     return $self;
>>> }
>>>
>>> 1;
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> /home/Perl/tmpl/mainpage.tmpl:
>>> ----------------------------------------------------
>>> <html><body bgcolor="#FF00FF">Test!</body></html>
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> /home/Perl/tests/View_mainpage.pl
>>> ----------------------------------------------------
>>> #!/usr/bin/perl -w
>>>
>>> # Test printing of the main page
>>> print "Main Page..";
>>>
>>> #Let's load the view module
>>> use lib "../";
>>> use Myserver::View;
>>> #Now let's load some things that are very handy
>>> use strict;         #strict tolerance for code
>>> use Carp;           #debugging
>>> use warnings;       #more debugging
>>> use diagnostics;    #even more debugging
>>>
>>> # Let's create an object
>>> my $view        = Myserver::View->new;
>>>
>>> # Now, let's tell View to display the main page
>>> $view->mainpage;
>>>
>>> print ".OK";
>>>
>>> 1;
>>> ----------------------------------------------------
>>>
>>>
>>>
>>>
>>> On Thu, 2008-03-13 at 13:29 +0800, Foo JH wrote:
>>>> try print $template->output;
>>>>
>>>> You forgot the print();
>>>>
>>>> xyon wrote:
>>>>> Hey everyone,
>>>>>
>>>>> Firstly, I apologize I sent the previous email under an incorrect subject
line.
>>>>>
>>>>> I am working on my first Object-Oriented project, and have hit a slight
>>>>> snag. I am using HTML::Template to output within the View module, but
it
>>>>> never outputs. I don't see any errors in the logs, I just get a blank
>>>>> page. Below is pertinent information including a test script with its
>>>>> output:
>>>>>
>>>>>
>>>>>
>>>>> OS Info:
>>>>> ----------------------------------------------------
>>>>> CentOS release 4.6 (Final)
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> Package info:
>>>>> ----------------------------------------------------
>>>>> perl-5.8.8-11
>>>>> perl-HTML-Template-2.9-1
>>>>> httpd-2.0.59-1.el4s1.10.el4.centos
>>>>> mod_perl-2.0.3-1.el4s1.3
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> /home/perl/Myserver/View.pm
>>>>> ----------------------------------------------------
>>>>> package Myserver::View;
>>>>>
>>>>> #Setup some essentials
>>>>> use strict;         #strict tolerance for code
>>>>> use Carp;           #debugging
>>>>> use diagnostics;    #more debugging
>>>>> use warnings;       #more debugging
>>>>>
>>>>> #Loadup some needed functions
>>>>> use HTML::Template;
>>>>>
>>>>> sub new {
>>>>>     my $self        = shift;
>>>>>     return $self;
>>>>> }
>>>>>
>>>>> sub mainpage {
>>>>>     my $self        = shift;
>>>>>     my $template    = HTML::Template->new( filename =>
>>>>> '/home/Perl/tmpl/mainpage.tmpl',
>>>>>             cache => 1,
>>>>>             debug => 1, 
>>>>>             stack_debug => 1 );
>>>>>     print "Content-Type: text/html\n\n";
>>>>>     $template->output;
>>>>>     return $self;
>>>>> }
>>>>>
>>>>> 1;
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> /home/Perl/tests/View_mainpage.pl
>>>>> ----------------------------------------------------
>>>>> #!/usr/bin/perl -w
>>>>>
>>>>> # Test printing of the main page
>>>>> print "Main Page..";
>>>>>
>>>>> #Let's load the view module
>>>>> use lib "../";
>>>>> use Myserver::View;
>>>>> #Now let's load some things that are very handy
>>>>> use strict;         #strict tolerance for code
>>>>> use Carp;           #debugging
>>>>> use warnings;       #more debugging
>>>>> use diagnostics;    #even more debugging
>>>>>
>>>>> # Let's create an object
>>>>> my $view        = Myserver::View->new;
>>>>>
>>>>> # Now, let's tell View to display the main page
>>>>> $view->mainpage;
>>>>>
>>>>> print ".OK";
>>>>>
>>>>> 1;
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> /home/Perl/tmpl/mainpage.tmpl:
>>>>> ----------------------------------------------------
>>>>> <html><body bgcolor="#FF00FF">Test!</body></html>
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> Output with debugging on (as above):
>>>>> ----------------------------------------------------
>>>>> $ tests/View_mainpage.pl 
>>>>> ### HTML::Template Debug ### In _parse:
>>>>> ### HTML::Template _param Stack Dump ###
>>>>>
>>>>> $VAR1 = [
>>>>>           \'<html><body bgcolor="#FF00FF">Test!</body></html>
>>>>> '
>>>>>         ];
>>>>>
>>>>> Main Page..Content-Type: text/html
>>>>>
>>>>> ### HTML::Template Debug ### In output
>>>>> ### HTML::Template output Stack Dump ###
>>>>>
>>>>> $VAR1 = [
>>>>>           \'<html><body bgcolor="#FF00FF">Test!</body></html>
>>>>> '
>>>>>         ];
>>>>>
>>>>> .OK
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> Output without debugging:
>>>>> ----------------------------------------------------
>>>>> $ tests/View_mainpage.pl 
>>>>> Main Page..Content-Type: text/html
>>>>>
>>>>> .OK
>>>>> ----------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>   
> 
> 

Mime
View raw message