KnpMenuBundle:为什么使用'route'而不是'uri'来转换<a> element to <span>?</span></a>

时间:2014-01-31 14:01:44

标签: symfony knpmenubundle knpmenu

我正在使用Symfony 2.3.x上的KNPMenuBundle创建一个捆绑包并且它没有标记当前元素,因此,我认为问题与使用'uri'而不是'route'有关,因为我在Symfony等等,当我使用route时,元素会从

更改
    <li><a href="engineerings">Engineerings</a></li>

为:

        <li><span>Engineerings</span></li>

<a>元素

public function mainMenu(FactoryInterface $factory, array $options) {
        $factory = new MenuFactory();
        $menu = $factory->createItem('root');
        $menu->setChildrenAttributes(array('id' => 'tabs', 'class' => 'fl'));
        $menu->addChild('Cooperators', array('uri' => 'companies'));
        $menu->addChild('Customers', array('uri' => 'clients'));
        $menu->addChild('Engineerings', array('uri' => 'engineerings'));
        $menu->addChild('Lines', array('uri' => 'lines'));
        $menu->addChild('Priorities', array('uri' => 'priorities'));
        $menu->addChild('Projects', array('uri' => 'projects'));
        $menu->addChild('Statuses', array('uri' => 'statuses'));
        $menu->addChild('Sites', array('uri' => 'sites'));
        $menu->addChild('Reports', array('uri' => 'reports'));
        $menu->addChild('Roles', array('uri' => 'roles'));
        $menu->addChild('Users', array('uri' => 'users'));
        return $menu;
    }

<span>元素

 public function mainMenu(FactoryInterface $factory, array $options) {
        $factory = new MenuFactory();
        $menu = $factory->createItem('root');
        $menu->setChildrenAttributes(array('id' => 'tabs', 'class' => 'fl'));
        $menu->addChild('Cooperators', array('route' => 'companies'));
        $menu->addChild('Customers', array('route' => 'clients'));
        $menu->addChild('Engineerings', array('route' => 'engineerings'));
        $menu->addChild('Lines', array('route' => 'lines'));
        $menu->addChild('Priorities', array('route' => 'priorities'));
        $menu->addChild('Projects', array('route' => 'projects'));
        $menu->addChild('Statuses', array('route' => 'statuses'));
        $menu->addChild('Sites', array('route' => 'sites'));
        $menu->addChild('Reports', array('route' => 'reports'));
        $menu->addChild('Roles', array('route' => 'roles'));
        $menu->addChild('Users', array('route' => 'users'));
        return $menu;
    }

现在,为什么会这样?另外,我该如何设置当前项目?我不能让它显示'当前'类。

1 个答案:

答案 0 :(得分:2)

你的问题就在这一行:

$factory = new MenuFactory();

你不需要它。只需删除它。这将使用默认设置创建新的MenuFactory。当我像这样创建自己的factory时,我自己会遇到一些有线行为。