[Catalyst] Accessing YAML details from within the Model libraries

Jonathan Rockway jon at jrock.us
Thu Jan 18 16:45:43 GMT 2007

John Napiorkowski wrote:
> package myapp::Controller::test;
> [snip snip]
> sub myaction :Local {
>  my ($self, $c) = @_;
>  $c->log->info($self->{attr}); #onetwothree to log
> }

It would be better if you did:

   package MyApp::C::Test;
   use base 'Catalyst::Controller';
   __PACKAGE__->mk_accessors(qw/attr somethingelse whatever/);
               # ^^ important!

   sub an_action :Whatever {
      my ($self, $c, @args) = @_;
      my $attr = $self->attr;                 # get
      $self->somethingelse('something else'); # set

You can set them via the config file as above:

     attr: foo
     whatever: bar

See the Class::Accessor documentation for full details on how these
accessors work.

> I haven't tested this but I image it would work from
> Views and Models as well.  Give it a try.

It works.  Views, Models, and Controllers are all Components.
Theoretically you can have components that aren't M/V/C, but I've never
done that.

package JAPH;use Catalyst qw/-Debug/;($;=JAPH)->config(name => do {
$,.=reverse qw[Jonathan tsu rehton lre rekca Rockway][$_].[split //,
";$;"]->[$_].q; ;for 1..4;$,=~s;^.;;;$,});$;->setup;

More information about the Catalyst mailing list