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となる。
参考