我正在使用Zend2,我正在动态创建菜单项。 这是我正在使用的功能:
public static function getAdminMenu() {
$config = \App\Application::getInstance()->getConfig();
$menuItems = $config['menu_items'];
$html = '<ul>';
foreach ($menuItems as $section => $menuItem) {
$html .= '<div class="user-menu-section">' . $section . '</div>';
foreach ($menuItem as $subSection => $params) {
$html .= '<li><a href="' . $config['router']['routes'][$menuItem[$subSection]['link']]['options']['route'] . '">' . $subSection . '</a></li>';
}
}
$html .= '</ul>';
return $html;
}
如何为每个菜单项创建具有不同类user-menu-section的div。它应该是'user-menu-section1','user-menu-section2'......
或者更好地使用这样的东西:
<div class="' . $section . '">
;
但在这种情况下,如果$ section是一个由两个单词组成的字符串,我需要在单词和两个单词之间使用' - ',如果可能的话。
答案 0 :(得分:2)
好吧,只需使用你的$section
并修改它即可。使用ZF2,您可以使用过滤器CamelCaseToDash
$filter = new \Zend\Filter\Word\CamelCaseToDash();
$classFiltered = strtolower($filter->filter($class);)
现在,您可以使用$classFiltered
进行CSS类分配。
因为你在标签中提到了两个框架。如果您使用的是ZF2,那么代码很糟糕:D您应该自己创建一个呈现菜单的ViewHelper。 Evan Coury has written a very easy introduction on how to do that.
除此之外,您不需要对某些Application::getInstance()
进行静态调用。如果您想获得对配置的访问权限,请通过ServiceLocator
执行此操作。在Controller中,这将是这样的:
$config = $this->getServiceLocator()->get('config');
如果你需要在Controller之外的另一个类中配置,你可以从ServiceLocator创建类并将配置注入到这个类中。