我是一个试图开始使用HAML的PHP开发人员,使用此实现: http://phphaml.sourceforge.net/
HAML看起来很棒,但我不明白它是否/如何支持partials(或包含,因为它们在PHP世界中被调用)。
我想有一个主模板HAML文件然后去加载所有小块的一堆部分。 (然后我也可以在其他模板中重用这些部分。)
在PHP或Ruby中,这将非常简单,有没有办法用HAML做到这一点?谢谢!
迪伦
答案 0 :(得分:3)
您可以使用phpHaml现有的render_haml_partial
方法类比创建全局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);
}
此方法可以放在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
或类似的东西 - 我可能会在一段时间内向作者提出建议。
答案 1 :(得分:2)
相当古老的问题,但我已经更新了phpHaml的源代码以反映这个新功能!
检查提交@github https://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f