Ethna2.5以降でTemplateのディレクトリ・パスを変えたい場合

このエントリーをはてなブックマーク Share

ethna2.3.6までは、デフォルトのTemplateディレクトリ(template/ja)から変更したい時に{App_Id}_ControllerでgetTemplatedirをオーバーライドするのが定石でした。ethnaコマンドもgetTemplatedirを見てくれるのでethna add-templateなども問題ありませんでした。

ただ、Ethna-2.5以降では、国際化対応のためLocaleが追加され、以下のジェネレータプラグインのコードのコメント通り(39,40行目)、Localeが入っていないと勝手に補完してくれるようです。このため、ethna add-templateコマンドでtemplateを生成する際にLocaleをディレクトリパスに強制的に入れられてしまうため、国際化対応したくない場合(笑)はここをスキップする必要があります。

今回は綺麗に拡張するのが面倒だったためコメントアウトしましたが、今後は何らかの切り替えができるといいかもしれませんね。

Ethna/class/Plugin/Generator/Ethna_Plugin_Generator_Template.php

13 /**
14  *  スケルトン生成クラス
15  *
16  *  @author     Masaki Fujimoto <fujimoto@php.net>
17  *  @access     public
18  *  @package    Ethna
19  */
20 class Ethna_Plugin_Generator_Template extends Ethna_Plugin_Generator
21 {
22     /**
23      *  テンプレートのスケルトンを生成する
24      *
25      *  @access public
26      *  @param  string  $forward_name   テンプレート名
27      *  @param  string  $skelton        スケルトンファイル名
28      *  @param  string  $locale         ロケール名
29      *  @param  string  $encoding       エンコーディング
30      *  @return true|Ethna_Error        true:成功 Ethna_Error:失敗
31      */
32     function &generate($forward_name, $skelton = null, $locale, $encoding)
33     {
34         //  ロケールが指定された場合は、それを優先する
35         if (!empty($locale)) {
36             $this->ctl->setLocale($locale);
37         }
38
39         //  ロケール名がディレクトリに含まれていない場合は、
40         //  ディレクトリがないためなのでそれを補正
41         $tpl_dir = $this->ctl->getTemplatedir();
42         if (!empty($locale) && strpos($tpl_dir, $locale) === false) {
43             $tpl_dir = $this->ctl->getDirectory(’template’);
44             $tpl_dir .= “/$locale”;
45         }
46         if ($tpl_dir{strlen($tpl_dir)-1} != ‘/’) {
47             $tpl_dir .= ‘/’;
48         }

Bookmark and Share

Comment / Trackback

  1. mumumuより:
    09 年03 月16 日 11:27 PM

    ごめんなさい。この件はバグです(´ー`; )
    チケットに登録しておきましたので、次のバージョンまでに修正しますです。

    https://sourceforge.jp/ticket/browse.php?group_id=1343&tid=15570

  2. hikoより:
    09 年03 月16 日 11:52 PM

    素早い反応ありがとうございます!
    csvのリストに従ってアクション・ビュー・テンプレートを生成するethnaコマンド経由のスクリプトを使っているので、とても助かります!

  3. mumumuより:
    09 年03 月26 日 5:32 PM

    遅れてしまいましたが、ようやく修正しました(´ー`;)
    差分は以下をご覧下さい。チケットもクローズしておきました。

    http://svn.sourceforge.jp/view?view=rev&root=ethna&revision=738
    https://sourceforge.jp/ticket/browse.php?group_id=1343&tid=15570

    御報告重ねて有難うございました m(_ _)m

コメントフォームは現在閉鎖中です。