1

我是一名 PHP 开发人员,尝试开始使用 HAML,使用此实现: http: //phphaml.sourceforge.net/

HAML 看起来很棒,但我不明白它是否/如何支持部分(或包含,因为它们在 PHP 世界中被称为)。

我想要一个主模板 HAML 文件,然后为所有小部分加载一堆部分。(然后我也可以在其他模板中重复使用这些部分。)

在 PHP 或 Ruby 中,这真的很容易,有没有办法用 HAML 做到这一点?谢谢!

迪伦

4

2 回答 2

3

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或类似的东西——我可能会在某个时候向作者建议。

于 2010-09-23T20:43:49.760 回答
2

相当老的问题,但我已经更新了 phpHaml 的源代码以反映这个新功能!

查看提交@github https://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f

于 2011-05-16T20:14:17.780 回答