動的にWRAPPERファイルを切り替えたい
TTの話。Catalyst にて。あるところは 'foo/wrapper.tt'、あるところは 'bar/wrapper.tt' を使いたい
思いついた方法
1. むりやり
$c->view('TT')->template->service->{WRAPPER} = [ 'foo/wrapper.tt' ];
- なんかヤ
- いろいろワナ有
2. WRAPPER文に変数
wapperされるほうのテンプレート
[% WRAPPER $wapper%] ... [% END # WRAPPER %]
で、
$c->stash->{wrapper} = 'foo/wrapper.tt';
- WRAPPER文(特にEND)がめんどい
3. PROCESS文に変数
configでオートラッパーを xxx/wrapper.tt とかにして、それにはただ
[% PROCESS $wrapper -%]
と書き、
$c->stash->{wrapper} = 'foo/wrapper.tt';
でコントロール。
- PROCESS 一行のファイルが必要だけど
- 一番まともぽい
3 にしたけど。他にいい方法あるかな。TTはいろいろワザがあるからな。一度TT本読むか
追記
変態じみてくるけどこんなのもある
4. configでテキストリファレンスを渡す
WRAPPER => [ \ '[% PROCESS $wrapper -%]' ]
- としておけば、PROCESS 一行のファイルがなくてすっきりw
- リストリファレンスで渡さないといけないよ