Volt Templating EngineについてPhalconが提供するドキュメントを読んだことがあります。データをカスタマイズするために、 Volt Compilerにカスタム関数を追加することがわかりました。しかし、nレベルの階層メニュー/カタログケースに関しては、再帰が必要で、機能させることができません。これに対する解決策を教えてください。addFuntion()addFunction()
1 に答える
1
再帰を使用しても問題ありません - volt は PHP ファイルにコンパイルされることを思い出してください。また、ボルト関数は単純な PHP であるため、次のようになります。
$compiler->addFunction(
'menu',
function ($resolvedArgs, $exprArgs) {
return 'MenuHelper::menu(' . $resolvedArgs . ')';
}
);
それでは、なぜでしょうか:
class MenuHelper
{
public static function menu($data)
{
if (empty($data)) {
return '';
}
$out = '<ul>';
foreach ($data as $name => $children) {
$out .= '<li>' . $name . self::menu($children) . '</li>';
}
$out .= '</ul>';
return $out;
}
}
そしてview.volt:
{{ menu([ 'a' : [ 'a1' : [], 'a1' : ['a11' : [],'a12' : [],'a13' : [] ] ], 'b' : [] ]) }}
あなたに与えます:
<ul><li>a<ul><li>a1<ul><li>a11</li><li>a12</li><li>a13</li></ul></li></ul></li><li>b</li></ul>
于 2014-07-18T06:28:42.067 に答える