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