CatalystでTemplate-Toolkitを使用したView

CatalystでTemplate-Toolkitを使用したViewクラスを作成する。


・ヘルパースクリプトを利用して雛形を作成する

$ ./script/myapp_create.pl view TT TT
 exists "/who/am/i/MyApp/script/../lib/MyApp/View"
 exists "/who/am/i/MyApp/script/../t"
created "/who/am/i/MyApp/script/../lib/MyApp/View/TT.pm"
created "/who/am/i/MyApp/script/../t/view_TT.t"


・設定ファイルに TTの設定項目を追加する

$ vi MyApp/myapp.yml
name: MyApp
+View::TT:
+    INCLUDE_PATH:
+        - 'root/tmpl'    TEMPLATE_EXTENSION: '.tt'


・tmplディレクトリ作成

$ mkdir MyApp/root/tmpl


・hello.ttの作成

$ vi MyApp/root/tmpl/hello.tt
+I am <a href="[% base %]hello">hello</a>.


・アプリケーションクラスの編集
>||
vi MyApp/lib/MyApp/Controller/Root.pm
sub hello : Local {
   my ( $self, $c ) = @_;

-    # Hello World
-    $c->res->body( 'Hello World!' );
+    $c->stash->{template} = 'hello.tt';
}


・ページにアクセスして表示確認
http://localhost:3000/hello

I am hello.


アプリケーションクラスの記述について
アプリケーションクラスでは、テンプレートファイルが指定されていない場合、
アクション名(今回の場合 hello) + yamlファイルに設定された拡張子を使います。
hello.tt が root/tmpl/hello.tt として作成されているので、省略するこもと可能です。


・アプリケーションクラスの再編集

vi MyApp/lib/MyApp/Controller/Root.pm
sub hello : Local {
-    my ( $self, $c ) = @_;
-
-    # Hello World
-    $c->stash->{template} = 'hello.tt';
}