This file documents the revision history for Perl extension Catalyst.
+5.67
+ - Looping and recursion tests plus a fix
+ - Added lots of API documentation.
+ - Changed default behaviors for $c->model/$c->controller/$c->view
+ to more sane settings.
+
5.66 2006-03-10 17:48:00
- Added Test::WWW::Mechanize::Catalyst support
- Cleaned generated tests
return $comp;
}
+# Return a component if only one matches.
+sub _comp_singular {
+ my ($c, @prefixes) = @_;
+
+ my $appclass = ref $c || $c;
+
+ my ($comp,$rest) = map { $c->_comp_search("^${appclass}::${_}::") }
+ @prefixes;
+ return $comp unless $rest;
+}
+
=head2 COMPONENT ACCESSORS
=head2 $c->comp($name)
$c->controller('Foo')->do_stuff;
+If name is omitted, will return the controller for the dispatched action.
+
=cut
sub controller {
my ( $c, $name ) = @_;
- return $c->_comp_prefixes($name, qw/Controller C/);
+ return $c->_comp_prefixes($name, qw/Controller C/)
+ if ($name);
+ return $c->component($c->action->class);
}
=head2 $c->model($name)
$c->model('Foo')->do_stuff;
+If the name is omitted, it will look for a config setting 'default_model',
+or check if there is only one model, and forward to it if that's the case.
+
=cut
sub model {
my ( $c, $name ) = @_;
- return $c->_comp_prefixes($name, qw/Model M/);
+ return $c->_comp_prefixes($name, qw/Model M/)
+ if $name;
+ return $c->comp($c->config->{default_model})
+ if $c->config->{default_model};
+ return $c->_comp_singular(qw/Model M/);
+
}
=head2 $c->view($name)
$c->view('Foo')->do_stuff;
+If the name is omitted, it will look for a config setting 'default_view',
+or check if there is only one view, and forward to it if that's the case.
+
=cut
sub view {
my ( $c, $name ) = @_;
- return $c->_comp_prefixes($name, qw/View V/);
+ return $c->_comp_prefixes($name, qw/View V/)
+ if $name;
+ return $c->comp($c->config->{default_view})
+ if $c->config->{default_view};
+ return $c->_comp_singular(qw/View V/);
}
=head2 Class data and helper classes
Returns a code reference to this action
-=head2 execute <c>
+=head2 execute( $c )
Execute this action against a context
return $c->execute( $self->class, $self );
}
-=head2 match <context>
+=head2 match( $c )
-Check Args setting, and makes sure number of args matches the setting.
+Check Args attribute, and makes sure number of args matches the setting.
=cut
=head1 DESCRIPTION
+This is a container for actions. The dispatcher sets up a tree of these
+to represent the various dispatch points in your application.
+
=head1 METHODS
-=head2 get_action
+=head2 get_action($name)
+
+Returns an action from this container based on the action name, or undef
=cut
=head2 actions
+Accessor to the actions hashref, containing all actions in this container.
+
=head2 part
+Accessor to the path part this container resolves to. Also what the container
+stringifies to.
+
=head1 AUTHOR
Matt S. Trout
Catalyst Base Class
+This is the base class for all Catalyst components. It also handles
+dispatch of actions for controllers.
+
=head1 METHODS
=head2 $self->action_namespace($c)
+Determine the namespace for actions in this component.
+
=cut
sub action_namespace {
=head2 $self->path_prefix($c)
+alias for action_namespace
+
=cut
sub path_prefix { shift->action_namespace(@_); }
=head2 $self->register_actions($c)
+register all actions for this component based on a given context.
+
=cut
sub register_actions {