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

标签 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;
}

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

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

最佳答案

好吧,只需使用您的$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 创建类并将配置注入(inject)此类。

关于php - 为每个动态创建的菜单创建不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18502451/

相关文章:

javascript - 如何在动态创建的按钮的单击事件上执行 javascript 函数。

ubuntu 中的password_verify 出现 php 错误,但在 xampp 上工作正常

php - 从 Paypal IPN 接收错误 "Invalid Host header"

php - 使用PHP进行跨域post数据

html - 在列表项菜单链接上显示图像

css - 为宽屏缩放网站

php - Zend Studio 9 中没有 PHP 函数类型等

html - 为什么第 nth-of-type 表现得像第 nth-child?

php - Magento 是框架还是平台?

zend-framework - zend框架应用内存使用和渲染时间问题