X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FView%2FTT.pm;h=f4d5762cf4164485d0566222b35936e06a6f0c10;hb=refs%2Ftags%2F0.38;hp=3d8c751b8a5f29f26972b79ec81a093c17f91701;hpb=582a5059d76c3ce4c028af9cc51844f9027047bf;p=catagits%2FCatalyst-View-TT.git diff --git a/lib/Catalyst/View/TT.pm b/lib/Catalyst/View/TT.pm index 3d8c751..f4d5762 100644 --- a/lib/Catalyst/View/TT.pm +++ b/lib/Catalyst/View/TT.pm @@ -10,7 +10,8 @@ use Template::Timer; use MRO::Compat; use Scalar::Util qw/blessed weaken/; -our $VERSION = '0.35'; +our $VERSION = '0.38'; +$VERSION = eval $VERSION; __PACKAGE__->mk_accessors('template'); __PACKAGE__->mk_accessors('expose_methods'); @@ -32,13 +33,10 @@ Catalyst::View::TT - Template View Class __PACKAGE__->config( # any TT configuration items go here - INCLUDE_PATH => [ - MyApp->path_to( 'root', 'src' ), - MyApp->path_to( 'root', 'lib' ), - ], TEMPLATE_EXTENSION => '.tt', CATALYST_VAR => 'c', TIMER => 0, + ENCODING => 'utf-8' # Not set by default PRE_PROCESS => 'config/main', WRAPPER => 'site/wrapper', @@ -46,6 +44,17 @@ Catalyst::View::TT - Template View Class expose_methods => [qw/method_in_view_class/], ); +# add include path configuration in MyApp.pm + + __PACKAGE__->config( + 'View::Web' => { + INCLUDE_PATH => [ + __PACKAGE__->path_to( 'root', 'src' ), + __PACKAGE__->path_to( 'root', 'lib' ), + ], + }, + ); + # render view from lib/MyApp.pm or lib/MyApp::Controller::SomeController.pm sub message : Global { @@ -88,6 +97,7 @@ sub new { my $config = { EVAL_PERL => 0, TEMPLATE_EXTENSION => '', + CLASS => 'Template', %{ $class->config }, %{$arguments}, }; @@ -187,8 +197,8 @@ sub new { } $self->{template} = - Template->new($config) || do { - my $error = Template->error(); + $config->{CLASS}->new($config) || do { + my $error = $config->{CLASS}->error(); $c->log->error($error); $c->error($error); return undef; @@ -278,7 +288,7 @@ sub template_vars { if ($self->expose_methods) { my $meta = $self->meta; foreach my $method_name (@{$self->expose_methods}) { - my $method = $meta->get_method( $method_name ); + my $method = $meta->find_method_by_name( $method_name ); unless ($method) { Catalyst::Exception->throw( "$method_name not found in TT view" ); } @@ -316,11 +326,9 @@ replacing C with the name of your application) which looks something like this: package FooBar::View::Web; + use Moose; - use strict; - use warnings; - - use base 'Catalyst::View::TT'; + extends 'Catalyst::View::TT'; __PACKAGE__->config(DEBUG => 'all'); @@ -375,22 +383,32 @@ first way is to call the C method in the view subclass. This happens when the module is first loaded. package MyApp::View::Web; - - use strict; - use base 'Catalyst::View::TT'; + use Moose; + extends 'Catalyst::View::TT'; __PACKAGE__->config({ - INCLUDE_PATH => [ - MyApp->path_to( 'root', 'templates', 'lib' ), - MyApp->path_to( 'root', 'templates', 'src' ), - ], PRE_PROCESS => 'config/main', WRAPPER => 'site/wrapper', }); You may also override the configuration provided in the view class by adding -a 'View::Web' section to your application config (either in the application -main class, or in your configuration file). This should be reserved for +a 'View::Web' section to your application config. + +This should generally be used to inject the include paths into the view to +avoid the view trying to load the application to resolve paths. + + .. inside MyApp.pm .. + __PACKAGE__->config( + 'View::Web' => { + INCLUDE_PATH => [ + __PACKAGE__->path_to( 'root', 'templates', 'lib' ), + __PACKAGE__->path_to( 'root', 'templates', 'src' ), + ], + }, + ); + +You can also configure your view from within your config file if you're +using L. This should be reserved for deployment-specific concerns. For example: # MyApp_local.conf (Config::General format) @@ -433,6 +451,12 @@ If you are calling C directly then you can specify dynamic paths by having a C key with a value of additonal directories to search. See L for an example showing this. +=head2 Unicode + +Be sure to set C<< ENCODING => 'utf-8' >> and use +L if you want to use non-ascii +characters (encoded as utf-8) in your templates. + =head2 RENDERING VIEWS The view plugin renders the template specified in the C