# Remember to update this in Catalyst::Runtime as well!
-our $VERSION = '5.7001';
+our $VERSION = '5.7003';
sub import {
my ( $class, @arguments ) = @_;
=head2 $c->detach( $class, $method, [, \@arguments ] )
+=head2 $c->detach()
+
The same as C<forward>, but doesn't return to the previous action when
processing is finished.
+When called with no arguments it escapes the processing chain entirely.
+
=cut
sub detach { my $c = shift; $c->dispatcher->detach( $c, @_ ) }
$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 view, and return it if that's the case.
+If the name is omitted, it will look for
+ - a model object in $c->stash{current_model_instance}, then
+ - a model name in $c->stash->{current_model}, then
+ - a config setting 'default_model', or
+ - check if there is only one model, and return it if that's the case.
=cut
return $c->_filter_component( $c->_comp_prefixes( $name, qw/Model M/ ),
@args )
if $name;
- return $c->component( $c->config->{default_model} )
- if $c->config->{default_model};
+ if (ref $c) {
+ return $c->stash->{current_model_instance}
+ if $c->stash->{current_model_instance};
+ return $c->model( $c->stash->{current_model} )
+ if $c->stash->{current_model};
+ return $c->model( $c->config->{default_model} )
+ if $c->config->{default_model};
+ }
return $c->_filter_component( $c->_comp_singular(qw/Model M/), @args );
}
$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.
+If the name is omitted, it will look for
+ - a view object in $c->stash{current_view_instance}, then
+ - a view name in $c->stash->{current_view}, then
+ - a config setting 'default_view', or
+ - check if there is only one view, and return it if that's the case.
=cut
return $c->_filter_component( $c->_comp_prefixes( $name, qw/View V/ ),
@args )
if $name;
- return $c->component( $c->config->{default_view} )
- if $c->config->{default_view};
+ if (ref $c) {
+ return $c->stash->{current_view_instance}
+ if $c->stash->{current_view_instance};
+ return $c->view( $c->stash->{current_view} )
+ if $c->stash->{current_view};
+ return $c->view( $c->config->{default_view} )
+ if $c->config->{default_view};
+ }
return $c->_filter_component( $c->_comp_singular(qw/View V/) );
}