- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是一名 PHP 开发人员,尝试开始使用 HAML,使用以下实现: http://phphaml.sourceforge.net/
HAML 看起来很棒,但我不明白它是否/如何支持部分(或包含,因为它们在 PHP 世界中被称为)。
我想要一个主模板 HAML 文件,然后为所有小片段加载一堆部分。 (然后我也可以在其他模板中重用这些部分。)
在 PHP 或 Ruby 中这真的很容易,有什么方法可以用 HAML 做到这一点吗?谢谢!
迪伦
最佳答案
您可以通过类比 phpHaml 现有的 display_haml
方法来创建一个全局的 render_haml_partial
方法,它可能类似于:
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
或类似的东西 - 我可能会在某个时候向作者建议它。
关于php - 如何在 PHP 中将 HAML 模板拆分为不同的部分/包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781902/
我是一名优秀的程序员,十分优秀!