[僕] 2007年06月12日 アーカイブ

僕ト云フ事

たろマークはてなブックマーク

2007年06月12日

[catalyst] Catalyst でテンプレートファイルがあったら表示するの術

スタティックな html 置くにしても、tt でモジュール化したのを上手く使いたいよねー、と言うことでちょっと考えてみた。

Root コントローラでこんな風に書くと、アクセスされた path に対応するテンプレートが /root/src/ 以下にあったら表示するようにできた。表示したいテンプレートの拡張子を .tts に限るようにしてるので、普段使ってるテンプレートが不意に見えてしまうことはないと思う。

sub default : Private {
    my ( $self, $c ) = @_;
 
    my $template = $c->req->path . '.tts';
    if ( -s $c->path_to( '/root/src/' . $template ) ) {
        $c->stash->{template} = $template;
        return;
    }
 
    $c->res->status(404);
}

ちなみに Root#default で 404 Not Found にしてるのはこちらのアイデアをいただきました。

追記(2007-10-06T19:03:57+09:00)

id:holidays-l さんからご指摘いただきました
$c->req->path より $c->action の方が良いとのことです。