[Catalyst] Catalyst::View::Mason - updates
Michael Gray
mjg17 at eng.cam.ac.uk
Thu May 4 17:37:27 CEST 2006
On Mon, 1 May 2006, Andres Kievsky wrote:
> I'd like to discuss any feature requests/errors/bugs/patches/etc that
> the community/users/etc would like to make to it - I haven't been able
> to follow the Catalyst discussion lists for those few months and I'm
> getting up to date, so if you have anything to say, please say it now
> - or just point me privately to anything relevant.
My MasonSite helper patch has already been mentioned.
Today I found myself reusing some old Mason pages, from Catalyst, which
made use of attributes of $r (Apache request object). These are in use
in a pure Mason app. In my own Mason view I lashed this up as follows.
I only needed $r->connection->user, but you get the idea:
use base 'Catalyst::View::Mason';
use Apache::FakeRequest;
use NEXT;
# This relies on my allow_globals patch to Catalyst::View::Mason
__PACKAGE__->config->{allow_globals} = [qw($r)];
our $r;
sub process {
my $self = shift;
my $c = shift;
my $connection = bless {}, 'Apache::FakeConnection';
$connection->user($c->req->user());
$r = Apache::FakeRequest->new(connection => $connection);
$self->template->set_global('$r', $r);
return $self->NEXT::process($c, @_);
}
# Very simple fake of Apache::Connection
package Apache::FakeConnection;
use base qw(Class::Accessor::Fast);
__PACKAGE__->mk_accessors(qw(user));
1;
This could be rolled into Catalyst::View::Mason, perhaps as an
enabled-by-config option.
I dare say Catalyst gurus could also advise on how to pick up the real
$r as a possibly-dangerous optimisation when the app is running under
Catalyst::Engine::Apache.
Best
--
Michael
More information about the Catalyst
mailing list