[Catalyst] Accessing $c from Model

Ash Berlin ash at cpan.org
Wed Dec 27 13:01:37 GMT 2006


Mark Zealey wrote:
> Hi there,
> 
> I'm basically wanting to write a simple log function which logs hits on my 
> website as entries in a database (automatically adding $c->user->{id} and 
> $c->req->referrer etc), but to do so I want to use a model (I think). Any 
> ideas how I can just say $c->model('Log')->info("foo") and automatically get 
> $c passed in? I think I could have sth like:
> 
> package MyApp::Model::Log;
> use base 'Catalyst::Model';
> 
> my $last_c;
> 
> sub ACCEPT_CONTEXT {
> 	my ($self, $c) = @_;
> 	$last_c = $c;
> }
> 
> sub info {
> 	my ($self, $msg) = @_
> 	my $c = $last_c;
> 	...
> }
> 
> but this seems pretty messy...
> 
> Mark
> 

Very very *VERY* bad idea.

__PACKAGE__->mk_accessors(context);

sub ACCEPT_CONTEXT {
   my ($self, $c, @args) = @_;

   my $new = bless({ %$self }, ref $self);
   $new->context($c);
   return $new;
}


Something like the above instead.

Ash



More information about the Catalyst mailing list