正如我浏览了Phalcon为Volt 模板引擎提供的文档一样。我发现在Volt Compiler中添加自定义函数来自定义数据。但是关于n 级分层菜单/目录案例,我需要递归,我无法使其工作。请指导我解决这个问题。addFuntion()
addFunction()
问问题
793 次
1 回答
1
使用递归没问题 - 请记住 volt 被编译为 PHP 文件。volt 函数也是普通的 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 回答