为每个动态创建的菜单创建不同的类

时间:2013-08-29 04:44:47

标签: php css zend-framework zend-framework2

我正在使用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是一个由两个单词组成的字符串,我需要在单词和两个单词之间使用' - ',如果可能的话。

1 个答案:

答案 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创建类并将配置注入到这个类中。