1

我正在使用 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;
}

如何为每个菜单项创建具有不同类用户菜单部分的 div。它应该类似于“user-menu-section1”、“user-menu-section2”...

或者也许更好地使用这样的东西: <div class="' . $section . '">; 但在这种情况下,如果 $section 是一个由两个单词组成的字符串,如果可能的话,我需要在单词和两个单词之间使用“-”小写字母。

4

1 回答 1

2

好吧,只需使用您的$section并修改它。使用 ZF2,您将使用过滤器CamelCaseToDash

$filter        = new \Zend\Filter\Word\CamelCaseToDash();
$classFiltered = strtolower($filter->filter($class);)

现在您可以使用$classFiltered您的 CSS-Class 分配。

而且由于您在标签中提到了这两个框架。如果您使用的是 ZF2,那么该代码很糟糕:D 您应该自己创建一个 ViewHelper 来呈现菜单。Evan Coury 就如何做到这一点写了一个非常简单的介绍。

除此之外,您不需要对 some 进行静态调用Application::getInstance()。如果您想访问配置,您可以通过ServiceLocator. 在控制器中,这看起来像这样:

$config = $this->getServiceLocator()->get('config');

如果您需要 Controller 之外的另一个类中的配置,则从 ServiceLocator 创建类并将配置注入到此类中。

于 2013-08-29T05:28:45.837 回答