Catalyst::View::TT::ControllerLocal - Catalyst TT View with template names relative to the Controller


Use the helper to create a View class for your

    script/ view TT TTControllerLocal

This creates the MyApp::View::TT class.

Forward to the View like you normally would

    #Meanwhile, maybe in a private end action
    if(!$c->res->body) {
        if($c->stash->{template}) {
        } else {
            die("No output method!\n");


Catalyst::View::TT::ControllerLocal is like a normal Catalyst TT View, but with template file names relative to the current Controller. So with a set of templates like:


and an action add in the Controller MyApp::Controller::Frobniz, you set $c->stash->{template} to add.html in order for it to pick up the ./root/frobbiz/add.html template.

Setting the $c->stash->{template} from Controller MyApp::Controller::Bogon would instead pick the default template in ./root/add.html (since there is no Bogon subdirectory under root).

In addition, since there is no file edit.html except in the Frobniz directory, C::V::TT::ControllerLocal will default to looking for edit.html in ./root/ and ./root/base (or whatever you set MyApp->config->{INCLUDE_PATH} to).



The constructor for the TT view. Sets up the template provider, and reads the application config.


Render the template specified in $c->stash->{template} or $c->request->match.

The template file name is fetched from one of the Template's include_paths. The name of the current action's namespace is prepended to this list, so for the action edit in MyApp::Controller::Frobniz, the prepended directory is ./root/frobniz.

Example: If $c->stash->{template} = edit.html you can put a specific template in ./root/myaction/edit.html, or a general template in ./root/base/edit.html or ./root/edit.html.

If the action is MyApp::Controller::MyAction, the specific template is used. If the action is MyApp::Controller::MyOtherAction, the ./root/base/edit.html is used.

See also: Catalyst::View::TT::process.


Johan Lindstrom <johanl ÄT>


This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 146:

Non-ASCII character seen before =encoding in 'ÄT'. Assuming CP1252