Reputation: 245
I am using Zend2 and i am creating menu items dynamicly. This is the function i am using:
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;
}
How can i create divs with different class user-menu-section for each menu item. It should be something like 'user-menu-section1', 'user-menu-section2'...
Or maybe better to use something like this:
<div class="' . $section . '">
;
but in this case, if $section is a string of two words i would need '-' in between words and both words small caps, if it is possible.
Upvotes: 1
Views: 73
Reputation: 16455
Well, just use your $section
and modify this. Using ZF2, you'd use the Filter CamelCaseToDash
$filter = new \Zend\Filter\Word\CamelCaseToDash();
$classFiltered = strtolower($filter->filter($class);)
Now you can use $classFiltered
for your CSS-Class assignment.
And since you've mentioned both frameworks in your tags. In case you are using ZF2, that code is horrible :D You should create yourself a ViewHelper that renders the Menu. Evan Coury has written a very easy introduction on how to do that.
Aside from that, you don't need a static call to some Application::getInstance()
. If you want to gain access to the config you do this via the ServiceLocator
. In a Controller this would look like this:
$config = $this->getServiceLocator()->get('config');
If you need the config in another class outside of the Controller, you create the class from the ServiceLocator and inject the config into this class.
Upvotes: 2