On Tue, May 05, 2009 at 10:54:17AM -0400, Dennis Daupert wrote: > I've created a view that's intended to write a couple of files to the file > system. > > The output filename needs to be dynamically set. I'm having a bit of a go > figuring out how to do that. > > The TT configuration documentation speaks of an output subroutine: > > OUTPUT => \&output, > > Later on in the view base class... > > sub output { > my $filename = shift; > # do stuff > } > > Here's my question: > How do I get the $filename into sub output when I forward to the view?
Screw that. sub write_file { my ($self, $c, $filename) = @_; my $data = $self->render($c, ...); # look at how process calls render <write data> } then do: $c->view('Foo')->write_file($c, $filename); Having to pass $c along like that is a little bit annoying, but this approach is -way- simpler. Of course if you were feeling truly insane you could do $self->template->{OUTPUT} = sub { <capture $filename here> }; $self->render(...); but I don't really see that it would gain you anything. *wonders if write_file should be a role that applies to any view that supplies render* ... -- Matt S Trout Catalyst and DBIx::Class consultancy with a clue Technical Director and a commit bit: http://shadowcat.co.uk/catalyst/ Shadowcat Systems Limited mst (@) shadowcat.co.uk http://shadowcat.co.uk/blog/matt-s-trout/ _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/