我是一名 PHP 开发人员,尝试开始使用 HAML,使用此实现: http: //phphaml.sourceforge.net/
HAML 看起来很棒,但我不明白它是否/如何支持部分(或包含,因为它们在 PHP 世界中被称为)。
我想要一个主模板 HAML 文件,然后为所有小部分加载一堆部分。(然后我也可以在其他模板中重复使用这些部分。)
在 PHP 或 Ruby 中,这真的很容易,有没有办法用 HAML 做到这一点?谢谢!
迪伦
我是一名 PHP 开发人员,尝试开始使用 HAML,使用此实现: http: //phphaml.sourceforge.net/
HAML 看起来很棒,但我不明白它是否/如何支持部分(或包含,因为它们在 PHP 世界中被称为)。
我想要一个主模板 HAML 文件,然后为所有小部分加载一堆部分。(然后我也可以在其他模板中重复使用这些部分。)
在 PHP 或 Ruby 中,这真的很容易,有没有办法用 HAML 做到这一点?谢谢!
迪伦
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);
}
该方法可以放在 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 的源代码以反映这个新功能!
查看提交@github https://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f