1

私は、この実装を使用して HAML の使用を開始しようとしている PHP 開発者です: http://phphaml.sourceforge.net/

HAML はすばらしく見えますが、パーシャル (または PHP の世界で呼ばれるインクルード) をサポートするかどうか/どのようにサポートするかはわかりません。

私はマスター テンプレートの HAML ファイルを用意して、すべての小さな部分のパーシャルを大量にロードしたいと考えています。(その後、他のテンプレートでもそれらの部分を再利用できます。)

PHP または Ruby では、これは非常に簡単ですが、HAML でこれを行う方法はありますか? ありがとう!

ディラン

4

2 に答える 2

3

次のようなrender_haml_partialphpHaml の既存のメソッドと同様に、グローバル メソッドを作成できます。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呼び出して結果を返すため、呼び出し元のテンプレートにその場で挿入できることです。fetchdisplay

次に、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のソースコードを更新しました。

コミットをチェックしてください@githubhttps ://github.com/endorama/phphaml/commit/8d95d5ebff06275db8b14438e566c6e41ec91b7f

于 2011-05-16T20:14:17.780 に答える