Mustache はパーシャルを許可し、たとえば Smarty と比較して比較的軽量であるため、優れていると思います。Mustache の使用に関する私の考えは、UI ライブラリを構成するパーシャルのセットを定義することです。これらのパーシャルでデータを渡し、ステロイドで html 要素を使用するように使用します。
パーシャルの例は、(視覚的に) リスト要素です。マークアップの観点から、その要素は 20 行の HTML ブロックとして定義されます。そのパーシャルをループで使用したい、または独立して使用したい場合があります。
上記のパーシャルを含むリストを作成したい場合は、次のようにします。
{{#my_list_elems}}
... Maybe some HTML code
{{> my_partial
{{/my_list_elems}}
my_partial が次のようになっているとしましょう:
<div>
<ul>
{{#another_array}}
<li>{{name}}</li>
{{>#another_array}}
</ul>
</div>
さて、これを理解しようとして数時間後、私のメインテンプレートは多かれ少なかれ次のようになります。
{{> head}}
{{> header}}
<div>Some static HTML</div>
... More code
{{#some_array}}
{{> my_partial}}
{{/some_array}}
{{> footer}}
問題: 何らかの理由で、これがうまくいきません。パーシャルを個別にレンダリングしてみましたが、動作します。でも配列?うーん。
また、私がそれを機能させた場合、変数をどのように処理するのかを理解するのに苦労しています。現時点では、次のようにレンダリングしています。
$template = $this->mustache->loadTemplate('template');
$partials['my_partial'] = $this->mustache->loadPartial('my_partial');
$data['my_partial_arr'] = $this->getPartialData();
echo $template->render($data, $partials);
PHP コードと部分的な例は一緒に動作することを意図していないことに注意してください。それらは単なる例です。
質問は、この機能はサポートされていますか? はいの場合、何が間違っていますか? 私の PHP 配列の形式が適切でない可能性がありますか? パーシャルの下位レベルで配列/ループを使用することもできますが、パーシャルを単独で使用する場合は、そのようなものは見苦しくなります (データを 1 つの要素配列にラップしてレンダリングします)。