ビューの種類
Catalystでは、モデルと同様にさまざまな出力を可能とするビューコンポーネントが用意されています。Catalystで使用可能な主なビューコンポーネントには次のようなものがあります。
| ビューコンポーネント | 説明 |
| Catalyst::View::TT | テンプレートクラスとしてTemplate::Toolkitを使用 |
| Catalyst::View::HTML::Template | テンプレートクラスとしてHTML::Templateを使用 |
| Catalyst::View::Mason | テンプレートクラスとしてHTML::Masonを使用 |
| Catalyst::View::JSON | データをJSON形式で出力する |
| Catalyst::View::Atom::XML | データをAtom形式のXMLとして出力する |
それ以外のビューについては、Catalyst::Manual::Components#VIEWSなどを参照ください。
上記サイトで紹介されていないものでも、CSVやPDF形式で出力できるビューコンポーネントもありますので、CPANサイトから検索してみてください。
Catalyst::View::TT
Catalystのビューコンポーネントとしてもっとも多く紹介されており、そしておそらくもっとも多くのサイトで使われているのがCatalyst::View::TTです。このコンポーネント自体は非常に薄く、処理のほとんどはTemplate::Toolkitに依存しています。
Catalyst::View::TTにはCatalystのビューコンポーネント以外に2つのヘルパクラスが用意されており、それぞれの用途により使い分けることができます。
ヘルパクラスの実行は、scriptディレクトリ以下にある<myapp>_create.plスクリプトを使用します。
$ <MyApp>/script/<myapp>_create.pl view 作成するビュークラス名 TT または TTSite
Catalyst::Helper::View::TT
Catalyst::Helper::View::TTでは、簡単なHTMLを表示するためのクラスを作成します。このヘルパを使用してビューを作成するには、次のコマンドを実行します。
$ ./MyApp/script/myapp_create.pl view TT TT
Catalyst::Helper::View::TTで作成されるファイル
このヘルパクラスにより作成されるファイルは次の2つです。
| クラス | 説明 |
| lib/<myApp>/View/TT.pm | Catalyst::View::TTを継承したビュークラス |
| t/view_TT.t | 作成されたビュークラスのテスト |
設定パラメータ
作成されたTT.pmでは、__PACKAGE__->configメソッドでいくつかの設定値を渡すことができます。デフォルトではTEMPLATE_EXTENSIONのみを指定しています。
主要な設定パラメータには次のようなものがあります。
| パラメータ名 | デフォルト値 | 説明 |
| INCLUDE_PATH | "root"、"root/base" | テンプレートファイルを探すパス |
| TEMPLATE_EXTENSION | 無し | テンプレートファイルの拡張子 |
| CATALYST_VAR | c | テンプレートファイルで使用するCatalystのコンテキストオブジェクト名 |
INCLUDE_PATHでは、テンプレートファイルを検索するためのディレクトリを指定します。
TEMPLATE_EXTENSIONでは、コントローラのネームスペースとアクション名から自動的にテンプレートファイルを探し出すための拡張子を指定します。
コントローラで明示的にテンプレートファイルを設定しない場合には、INCLUDE_PATHから、/<コントローラのネームスペース> /<アクション名>+TEMPLATE_EXTENSIONという規則に従って、テンプレートファイルを探しに行きます。
CATALYST_VARは、テンプレートファイルからCatalystのコンテキストオブジェクトを参照するための名前を指定します。
例えば、アクセスしてきたクライアントのUserAgentを取得するには、テンプレートファイルで次のように記述します(テンプレートファイルで使用可能なディレクティブについては後ほど説明します)。
[% c.req.user_agent %]
