次のプロジェクトでKohanaと一緒にMustacheテンプレートを使用する予定です。だから、私がやっているのは、KohanaをビューをレンダリングするときにシームレスにMustacheを使うようにすることです。例えば、私は私のviews
フォルダにこのファイルを持っているでしょう:Kohanaでテンプレートシステムをシームレスに使用していますか?
myview.mustache
その後、私は自分のアプリケーションで行うことができます。
$view = View::factory('myview');
echo $view->render();
ちょうど私が通常のビューで行うだろうように。コナナはこのようなことを許していますか?そうでない場合は、モジュールを使用して自分で実装できる方法はありますか? (もしそうなら、何が最善のアプローチだろうか?)
PS:私はKostacheを見ていたが、それは私のために直接口ひげPHPを使用するのと同じであるカスタム構文を使用します。私はKohanaの構文を使用してそれを行うために探しています。
編集:について
、これは私がする@ eriscoの回答に基づいて、それをやってしまった方法です。
フルモジュールは、GitHubの上で利用可能になりました:APPPATH /クラス/ view.phpでKohana-Mustache
:
<?php defined('SYSPATH') or die('No direct script access.');
class View extends Kohana_View {
public function set_filename($file) {
$mustacheFile = Kohana::find_file('views', $file, 'mustache');
// If there's no mustache file by that name, do the default:
if ($mustacheFile === false) return Kohana_View::set_filename($file);
$this->_file = $mustacheFile;
return $this;
}
protected static function capture($kohana_view_filename, array $kohana_view_data) {
$extension = pathinfo($kohana_view_filename, PATHINFO_EXTENSION);
// If it's not a mustache file, do the default:
if ($extension != 'mustache') return Kohana_View::capture($kohana_view_filename, $kohana_view_data);
$m = new Mustache;
$fileContent = file_get_contents($kohana_view_filename);
return $m->render($fileContent, Arr::merge(View::$_global_data, $kohana_view_data));
}
}
独自の工場を使用するKostacheとの唯一の違いはありませんか?私には問題のようには見えません。 –