Skip to content

Instantly share code, notes, and snippets.

@argentinaluiz
Last active March 27, 2019 13:58
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save argentinaluiz/6235030 to your computer and use it in GitHub Desktop.
Save argentinaluiz/6235030 to your computer and use it in GitHub Desktop.
A implementation to navigation menu from Bootstrap 2.x and 3.x using Zend Framework 2 and Twig
<?php
foreach ($this->container as $page):
$sub = $page->getPages();
$aAttribs = '';
$liClasses = array();
$liClass = '';
if ($page->isActive(true))
$liClasses[] = 'active';
if (count($sub) > 0):
$liClasses[] = 'dropdown';
$aAttribs = ' class="dropdown-toggle" data-toggle="dropdown"';
endif;
if (count($liClasses) > 0)
$liClass = ' class="' . implode(' ', $liClasses) . '"';
$tamSub = count($sub);
$caret = $tamSub > 0 ? '<b class="caret"></b>' : '';
$href = $tamSub > 0 ? 'javascript:void(0)' : $this->url($page->getRoute(), array('action' => $page->getAction()));
echo '<li' . $liClass . '><a href="' . $href . '"' . $aAttribs . '>' . $page->getlabel() . $caret . '</a>';
if ($tamSub > 0):
echo '<ul class="dropdown-menu">';
foreach ($sub as $pages):
$active = $pages->isActive() ? ' class="active"' : '';
echo '<li' . $active . '><a href="' . $this->url($pages->getRoute(), array('action' => $pages->getAction())) . '">' . $pages->getlabel() . '</a></li>';
endforeach;
echo '</ul></li>';
else:
echo '</li>';
endif;
echo '<li class="divider-vertical"></li>';
unset($aAttribs, $liClass, $liClasses, $tamSub, $caret);
endforeach;
{% for page in container %}
{% set sub= page.getPages() %}
{% if page.isActive(true) %}
{% set liClasses = ['active'] %}
{% else %}
{% set liClasses = [] %}
{% endif %}
{% if sub|length > 0 %}
{% set liClasses,
aAttribs = liClasses|merge(['dropdown']),
' class="dropdown-toggle" data-toggle="dropdown"'
%}
{% endif %}
{% if liClasses|length > 0%}
{% set liClass = ' class="' ~ liClasses|join(' ') ~ '"' %}
{% endif %}
<li {{liClass|raw}}>
<a href="javascript:void(0)" {{ aAttribs|raw }}>
{{page.getlabel()}}
<b class="caret"></b>
</a>
{% if sub|length > 0 %}
<ul class="dropdown-menu">
{% for pages in sub %}
{% set active = pages.isActive() ? ' class="active"' : '' %}
<li {{active|raw}}>
<a href="{{url(pages.getRoute(),{action: pages.getAction})}}">
{{pages.getlabel()}}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
<li class="divider"></li>
{% endfor %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment