[Catalyst] Models Inheriting from Catalyst::Base
    Bill Moseley 
    moseley at hank.org
       
    Thu Nov 17 22:36:56 CET 2005
    
    
  
On Thu, Nov 17, 2005 at 02:56:30PM -0600, Brandon Black wrote:
> Inheriting your Model from Catalyst::Model::* does not give your Model
> access to $c, but it does give your controllers access to your Model
> via:
> 
> $c->comp('App::M::CDBI::MyTable')->a_table_method();
I was asking about inheriting from Catalyst::Base (or
Catalyst::Model):
    package App::M::CDBI;
    use strict;
    use base 'Catalyst::Model';
    use DB;
    DB->new( App->config->{database} );
    sub new {
        my ( $self, $c ) = @_;
        $self = $self->NEXT::new( $c );
        use DateTime;
        $c->components->{sometime} = DateTime->now;
    }
    1;
$c is the App base class, and $self is App::M::CDBI in that example.
Then in a controller you can do:
    my $dt = $c->comp('sometime');
    warn "dt = $dt\n";
And then you might see something like this:
    dt = 2005-11-17T21:33:15
What use that is, I'm not sure yet. ;)
I suppose you could do:
    $c->components->{'Foo::BAR::sometime'} = DateTime->now;
And still get to that component without knowing its full name.
    my $dt = $c->comp('sometime');  # still works
-- 
Bill Moseley
moseley at hank.org
    
    
More information about the Catalyst
mailing list