$res->body question (was Re: [Catalyst] Extra characters inserted into PDF output

Dr. Jennifer Nussbaum bg271828 at yahoo.com
Sun Dec 21 14:20:14 GMT 2008


Sorry to return to this after such a long time, but i dont really know how to write tests for my apps, so i didnt realize there was a problem until just now.

--- On Wed, 12/3/08, Tomas Doran <bobtfish at bobtfish.net> wrote:

> From: Tomas Doran <bobtfish at bobtfish.net>
> Subject: Re: [Catalyst] Extra characters inserted into PDF output
> To: bg271828 at yahoo.com, "The elegant MVC web framework" <catalyst at lists.scsys.co.uk>
> Date: Wednesday, December 3, 2008, 4:25 AM
> On 3 Dec 2008, at 11:59, Dr. Jennifer Nussbaum wrote:
> > 
> > This looks like it's going to call fillform() even
> if theres a response set... <Jen codes>
> > 
> > THATS IT!
> > 
> > I just added "return if
> $c->response->body;" after the forward and it
> works! Nothing inserted! The problem was with fillform all
> the time.

The problem is that there *always* seems to be a body, so fillform doesnt work if im trying to do an edit. Specifically, in my Root.pm:

sub render : ActionClass('RenderView') { }

sub end : Private { 
  my ( $self, $c ) = @_;
  $c->forward('render');
  if ($c->res->body) { $c->log->info("There is a body; returning"); return; }
  if (defined $c->stash->{edit_data} ) {
    $c->fillform( $c->stash->{edit_data} );
  } else {
    $c->fillform;
  }
}

When i try to edit a page, which just goes through the usual Catalyst stuff, i find thta i still get a "There is a body; returning" message in my debug log. That is i get a body no matter what (here i am not generating a PDF page, just a regular page through TT), and fillform never runs. So i cant edit anything, it doesnt fill the form back in from my database.

Is something in the wrong place? Why do i have a body here?

Thanks!

Jen


      



More information about the Catalyst mailing list