najidev/bootstrap-menu

此包的最新版本(dev-master)没有提供许可信息。

在 \Knp\Menu 和 Twitter Bootstrap 之间的桥梁

dev-master 2013-09-12 09:51 UTC

This package is not auto-updated.

Last update: 2024-09-24 06:43:48 UTC


README

BootstrapMenu 库是 KnpMenu 和 Bootstrap 之间的桥梁。

<?php
$factory  = new \NajiDev\BootstrapMenu\MenuFactory();
$renderer = new \NajiDev\BootstrapMenu\Renderer();

$root = $factory->createItem('root');
$root->addChild('Home', array('uri' => '/'));
$root->addChild('Comments', array('uri' => '#comments'));
$root->addChild('Symfony2', array('uri' => 'http://symfony-reloaded.org/'));

$submenu = $root->addChild('Submenu');
$submenu->addChild('Child 1');
$submenu->addDivider('divider1');

$child = $submenu->addChild('Child 2');
$child->addChild('x');


echo $renderer->render($root, array('type' => 'tabs'));

上面的菜单应该渲染为

<ul class="nav nav-tabs">
  <li class="first">
    <a href="/">Home</a>
  </li>
  <li>
    <a href="#comments">Comments</a>
  </li>
  <li>
    <a href="http://symfony-reloaded.org/">Symfony2</a>
  </li>
  <li class="active last">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Submenu<span class="caret"></span></a>
    <ul class="menu_level_1 dropdown-menu">
      <li class="active first">
        <a>Child 1</a>
      </li>
      <li class="divider"></li>
      <li class="last">
        <a>Child 2</a>
      </li>
    </ul>
  </li>
</ul>

有几件事要说明

  • 菜单本身不知道其图形表示,因此您可以构建大型菜单并仅渲染其中的一部分。

  • 在渲染器使用过程中选择图形表示。您可以选择将菜单(选项 'type')渲染为

    • 标签页
    • 药丸
    • 列表(默认)

    此外,您还可以选择将选项 'stacked' 设置为 true 或 false(默认)以获得堆叠菜单。

  • 渲染器假设您希望用它的下拉菜单来渲染菜单。如果您有更多级别,这将被忽略,因为 Bootstrap 无法显示超过 2 级别的菜单。因此,示例中上面的子 "x" 不会被渲染。

  • MenuItem::addDivider() 是新的,允许添加水平分隔符(对子菜单很有趣)。