Returns a hashref containing your applications settings.
+=cut
+
+=item $c->controller($name)
+
+Get a L<Catalyst::Controller> instance by name.
+
+ $c->controller('Foo')->do_stuff;
+
+=cut
+
+sub controller {
+ my ( $c, $name ) = @_;
+ my $controller = $c->comp("Controller::$name");
+ return $controller if $controller;
+ return $c->comp("C::$name");
+}
+
=item debug
Overload to enable debug messages.
sub forward { my $c = shift; $c->dispatcher->forward( $c, @_ ) }
+=item $c->model($name)
+
+Get a L<Catalyst::Model> instance by name.
+
+ $c->model('Foo')->do_stuff;
+
+=cut
+
+sub model {
+ my ( $c, $name ) = @_;
+ my $model = $c->comp("Model::$name");
+ return $model if $model;
+ return $c->comp("M::$name");
+}
+
=item $c->namespace
Accessor to the namespace of the current action
return $c->{stash};
}
+=item $c->view($name)
+
+Get a L<Catalyst::View> instance by name.
+
+ $c->view('Foo')->do_stuff;
+
+=cut
+
+sub view {
+ my ( $c, $name ) = @_;
+ my $view = $c->comp("View::$name");
+ return $view if $view;
+ return $c->comp("V::$name");
+}
+
=item $c->welcome_message
Returns the Catalyst welcome HTML page.
unless ( $class->log ) {
$class->log( Catalyst::Log->new );
}
-
+
my $app_flag = Catalyst::Utils::class2env($class) . '_DEBUG';
- if ( ( defined( $ENV{CATALYST_DEBUG} ) ||
- defined( $ENV{ $app_flag } ) ) ?
- ( $ENV{CATALYST_DEBUG} || $ENV{ $app_flag } ) :
- $debug ) {
+ if (
+ ( defined( $ENV{CATALYST_DEBUG} ) || defined( $ENV{$app_flag} ) )
+ ? ( $ENV{CATALYST_DEBUG} || $ENV{$app_flag} )
+ : $debug
+ )
+ {
no strict 'refs';
*{"$class\::debug"} = sub { 1 };
$class->log->debug('Debug messages enabled');
--- /dev/null
+use Test::More tests => 7;
+use strict;
+use warnings;
+
+use_ok('Catalyst');
+
+my @complist =
+ map { "MyApp::$_"; }
+ qw/C::Controller M::Model V::View Controller::C Model::M View::V/;
+
+{
+
+ package MyApp;
+
+ use base qw/Catalyst/;
+
+ __PACKAGE__->components( { map { ( $_, $_ ) } @complist } );
+}
+
+is( MyApp->view('View'), 'MyApp::V::View', 'V::View ok' );
+
+is( MyApp->controller('Controller'),
+ 'MyApp::C::Controller', 'C::Controller ok' );
+
+is( MyApp->model('Model'), 'MyApp::M::Model', 'M::Model ok' );
+
+is( MyApp->view('V'), 'MyApp::View::V', 'View::V ok' );
+
+is( MyApp->controller('C'), 'MyApp::Controller::C', 'Controller::C ok' );
+
+is( MyApp->model('M'), 'MyApp::Model::M', 'Model::M ok' );