CatalystのViewのパスの指定方法

Viewの作り方はコマンドをはしらすだけ

$ ./MyApp/script/myapp_create.pl view TT TT

単純に使うだけであれば、root以下にアクションと対応したテンプレートファイルをおけばいい(MyApp/root/index.ttとか)


パスを変更するには、configにINCLUDE_PATHを指定すればいいだけだが・・。
以下は、rootからroot/tmplに変更する例

1. MyApp/lib/MyApp/View/TT.pmに書く場合

__PACKAGE__->config(
    INCLUDE_PATH => [
         MyApp->path_to( 'root', 'tmpl' ),    # 相対パス
         '/home/username/MyApp/root/temp',    # 絶対パス
         'root/tmpl',                         # ダメな例
    ],
    TEMPLATE_EXTENSION => '.tt',
    render_die => 1,
);

2. MyApp/myapp.ymlに書く場合

View::TT:
  INCLUDE_PATH:
    - __path_to(root/tmpl)__            # 相対パス
    - /home/username/MyApp/root/temp    # 絶対パス
    - root/temp                         # ダメな例
  TEMPLATE_EXTENSION: .tt
  render_die: 1

まず、注意点として配列で指定すること。
次に、相対パス絶対パスでは指定方法が異なるということ。
絶対パスはそのまま書けばよいが、相対パスのときはpath_toを使って書く。
さらに、ややこしいことにTT.pmに書く場合と、myapp.ymlに書く場合とでは書き方が異なる。

ちなみに、path_toは、$c->config->{'root'}のパスに指定したパスを追加している。
デフォルトでは、そのアプリまでのパスになっている。
$c->config->{'root'} = '/home/username/MyApp/'なので、
path_toでroot/tmplを指定すると、/home/username/MyApp/root/tmplとなる。

参考