silverstripe函数返回菜单级别

silverstripe函数返回菜单级别,silverstripe,Silverstripe,我正在尝试编写一个函数,返回页面上可见的菜单级别…此时我正在使用模板中的语句,即: <div class="<% if Menu(1) %>navA<% end_if %> <% if Menu(2) %>navB<% end_if %> <% if Menu(3) %>navC<% end_if %>">...</div> 。。。 如果页面上有3个菜单级别,则返回 我想要的是一个只返回当前页面上

我正在尝试编写一个函数,返回页面上可见的菜单级别…此时我正在使用模板中的语句,即:

<div class="<% if Menu(1) %>navA<% end_if %> <% if Menu(2) %>navB<% end_if %> <% if Menu(3) %>navC<% end_if %>">...</div>
。。。
如果页面上有3个菜单级别,则返回

我想要的是一个只返回当前页面上最低级别菜单的函数,即

谢谢

以下内容如何(未经测试):

你可能想考虑在控制器中使用一些自定义代码来实现逻辑重的东西,但是这会让你前进…

< P>这是完全可能的。 只需将以下内容添加到您的
Page\u控制器
类中:

function LowestLevel() {
    $i = 1;
    while($this->getMenu($i)->count() > 0) $i++;
    return 'level'.($i-1);
}
现在,您可以在模板中调用它,如下所示:

<div>lowest level: $LowestLevel</div>
最低级别:$LowestLevel
$LowestLevel将打印“级别1”、“级别2”等


如果你的类名必须像“navA”,“navB”。。。你需要做一些匹配,比如“level1”->“navA”,这应该不会太难-如果你需要任何帮助,请回来找我。

谢谢,这是有意义的,但是的……我希望将此输入控制器而不是模板。我只是找不到任何文档来帮助这一点。在这种情况下,使用@schellmax的解决方案-
$this->getMenu($level)
应该很好。IMHO这是非常前端特定的,所以我坚持使用模板方法。例如,如果您想提供信息的机器可读表示,您可能会使用XML或JSON。在那里,您可能不需要该类(我假设您希望将其用于样式设置),因此我会将其保留在特定模板中,而不是通用控制器中。至少这是我处理此类问题的方法……善意的提醒,放弃你的问题会减少社区对你未来问题给出答案的动机。你应该试着a)接受答案,b)发布反馈为什么给出的答案不能解决你的问题,或者c)发布你自己找到的解决方案,这样问题就可以标记为已解决(有相同问题的人可以在这里找到答案)。