読者です 読者をやめる 読者になる 読者になる

動的に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
  • リストリファレンスで渡さないといけないよ