0

Volt Templating EngineについてPhalconが提供するドキュメント読んだことがあります。データをカスタマイズするために、 Volt Compilerにカスタム関数を追加することがわかりました。しかし、nレベルの階層メニュー/カタログケースに関しては、再帰が必要で、機能させることができません。これに対する解決策を教えてください。addFuntion()addFunction()

4

1 に答える 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 に答える