Я планирую использовать шаблоны Усы вместе с Kohana в моем следующем проекте. Так что я пытаюсь сделать, чтобы Kohana плавно использовал Mustache при визуализации представления. Например, я бы этот файл в моей папке views
:Плавно используя систему шаблонов с Kohana?
myview.mustache
Тогда я могу сделать в моем приложении:
$view = View::factory('myview');
echo $view->render();
Так же, как я хотел бы сделать с обычной точки зрения. Кохана разрешает подобные вещи? Если нет, можно ли каким-либо образом реализовать его самостоятельно с помощью модуля? (Если это так, что бы быть лучшим подходом?)
PS: Я имел взгляд на Kostache но использует пользовательский синтаксис, который для меня является то же самое, используя Усы PHP напрямую. Я хочу сделать это, используя синтаксис Коханы.
Edit:
Для получения дополнительной информации, это, как я в конечном итоге делает это, основываясь на ответ @ erisco в.
Полный модуль теперь доступен на GitHub: Kohana-Mustache
В AppPath/классы/view.php:
<?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, что она использует свою собственную фабрику? Для меня это не похоже. –