Ethna > ドキュメント > 開発マニュアル > 遷移先定義、テンプレートの扱い方 > ビュー定義省略時の命名規則を変更する
ビュー定義省略時の命名規則を変更する
遷移先定義が省略された場合*1、以下の4つのファイル名またはクラス名が暗黙のうちに決定されます。
- ビュークラスが定義されたファイルのパス名
- ビュークラス名
これらの命名規則は、Ethna_Controllerに定義されている以下のメソッドをオーバーライドすることで変更することが出来ます。
- ビュークラスが定義されたファイルのパス名
- Ethna_Controller::getDefaultViewPath($forward_name, $fallback)
- ビュークラス名
- Ethna_Controller::getDefaultViewClass($forward_name, $fallback)
Ethna_Controllerでは、パス名は
$default_path = preg_replace('/_(.)/e', "'/' . strtoupper('\$1')", ucfirst($forward_name)) . '.' . $this->getExt('php');
つまり"foo_bar_hoge" -> "Foo/Bar/Hoge.php"となり、ビュークラス名は
$postfix = preg_replace('/_(.)/e', "strtoupper('\$1')", ucfirst($forward_name)); ... $r = sprintf("%s_View_%s", $this->getAppId(), $postfix);
となります。好みに応じて適宜オーバーライドしてください(それほどお勧めはしません)。
例えば、"foo_bar_hoge"というビュークラスに対応するファイル名を"foo_bar_hoge.php"にして、遷移名を"foo_bar_hoge_view"としたい場合は、以下のアプリケーションのコントローラに以下のような定義を追加します。
Sample_Controller.php:
/** * 遷移名に対応するビューパス名が省略された場合のデフォルトパス名を返す * * @access public * @param string $forward_name 遷移名 * @param bool $fallback クライアント種別によるfallback on/off * @return string ビュークラスが定義されるスクリプトのパス名 */ function getDefaultViewPath($forward_name, $fallback = true) { return $forward_name . ".php"; }
/** * 遷移名に対応するビュークラス名が省略された場合のデフォルトクラス名を返す * * @access public * @param string $forward_name 遷移名 * @param bool $fallback クライアント種別によるfallback on/off * @return string ビュークラス名 */ function getDefaultViewClass($forward_name, $fallback = true) { return $forward_name . "_view"; }
なお2番目の引数$fallbackは、現在アクティブなクライアントタイプ(PCブラウザ、i-mode、SOAP、etc...)に応じてデフォルト値を変更した場合等に使用しますが、とりあえず無視して頂いてOKです。