我正在使用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-manu-section2"。。。
或者最好使用这样的东西:<div class="' . $section . '">
;但在这种情况下,如果$section是一个由两个单词组成的字符串,如果可能的话,我需要单词之间的'-'和两个单词的小写字母。
好吧,只需使用$section
并修改它。使用ZF2,您可以使用Filter CamelCaseToDash
$filter = new 'Zend'Filter'Word'CamelCaseToDash();
$classFiltered = strtolower($filter->filter($class);)
现在,您可以使用$classFiltered
进行CSS类分配。
既然你在标签中提到了这两个框架。如果您使用ZF2,那么代码就太可怕了:D您应该为自己创建一个呈现Menu的ViewHelper。Evan Coury写了一篇关于如何做到这一点的简单介绍。
除此之外,您不需要对某些Application::getInstance()
进行静态调用。如果您想访问配置,可以通过ServiceLocator
进行访问。在控制器中,这看起来像这样:
$config = $this->getServiceLocator()->get('config');
如果您需要Controller之外的另一个类中的配置,则可以从ServiceLocator创建该类,并将配置注入该类。