Вы можете создать глобальный render_haml_partial
метод по аналогии с существующим display_haml
методом phpHaml, что может выглядеть примерно так:
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);
}
Этот метод может быть помещен в файл phpHaml в HamlParser.class.php
так он доступен все ваши шаблоны.
Единственное различие между этим и 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
или что-то подобное в конце концов - я мог бы предложить его автору некоторое время.
Я не думаю, что phpHaml поддерживает это еще напрямую. Но вы можете добиться чего-то подобного (но немного другого) с помощью 'display_haml' или написать свой собственный глобальный метод render_haml_partial' - см. Мой ответ для получения подробной информации о том, как выглядит этот метод. –