Вы можете создать глобальный render_haml_partial
метод по аналогии с существующим * phpHaml display_haml
методом, который может выглядеть примерно так:
function render_haml_partial($sFilename, $aVariables = array(), $sTmp = true, $bGPSSC = false)
{
$sPath = realpath($sFilename);
$haml = new HamlParser(dirname($sPath), $sTmp);
$haml->append($GLOBALS);
if ($bGPSSC)
{
$haml->append($_GET);
$haml->append($_POST);
$haml->append($_SESSION);
$haml->append($_SERVER);
$haml->append($_COOKIE);
}
$haml->append($aVariables);
return $haml->fetch($sFilename);
}
Этот метод можно поместить в файл HamlParser.class.php
phpHaml, чтобы он был доступен для всех ваших шаблонов.
Единственная разница между этим и display_haml
состоит в том, что он вызывает fetch
вместо display
в конце и возвращает результат, чтобы вы могли затем вставить его на месте в вызывающий шаблон.
Затем вы будете использовать его в своих шаблонах PHP / HAML следующим образом:
= render_haml_template("path to partial")
Тогда это будет очень похоже на синтаксис Rails / HAML:
= render :partial => 'path to partial'
Обратите внимание, что непосредственное использование display_haml
не дает такого же эффекта, поскольку он выводит шаблон непосредственно на вывод, а не возвращает результат вызывающей стороне. Таким образом, вы можете сделать следующее:
- display_haml("path to partial")
Но это не отражает результат рендеринга.
Полагаю, что кто-то, кому небезразлично phpHaml, может в конечном итоге добавить такой render_haml_partial
или что-то подобное - я мог бы предложить его автору когда-нибудь.