Johan Lindström > Catalyst-View-TT-ControllerLocal > Catalyst::View::TT::ControllerLocal

Download:
Catalyst-View-TT-ControllerLocal-0.02.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.02   Source  

NAME ^

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

SYNOPSIS ^

Use the helper to create a View class for your

    script/myapp_create.pl 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}) {
            $c->forward('MyApp::View::TT');
        } else {
            die("No output method!\n");
        }
    }

DESCRIPTION ^

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:

 ./root/edit.html
 ./root/add.html
 ./root/Frobniz/add.html

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).

METHODS ^

new

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

process

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.

AUTHOR ^

Johan Lindstrom <johanl ÄT cpan.org>

LICENSE ^

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

syntax highlighting: