Php KnpMenuBundle-如何为菜单的每个元素设置图标类?

Php KnpMenuBundle-如何为菜单的每个元素设置图标类?,php,symfony,knpmenubundle,knpmenu,Php,Symfony,Knpmenubundle,Knpmenu,我希望查看代码如下所示: <li> <a href="path/to/action"> <i class="icon-class"></i> <span class="title">Title</span> </a> </li> 我用以下代码(knp_menu.html.twig)覆盖了视图: {%block linkElement%}

我希望查看代码如下所示:

<li>
    <a href="path/to/action">
            <i class="icon-class"></i>
            <span class="title">Title</span>
    </a>
</li>
我用以下代码(knp_menu.html.twig)覆盖了视图:

{%block linkElement%}
{%import\u self作为knp\u菜单%}
{%endblock%}

如何将icon class name的值传递给Builder类中adminMenu()方法中的
元素?最简单的方法是什么?

您可以使用添加任何属性

$menu->addChild('Dashboard', array(
    'route' => 'admin_dashboard',
))->setAttribute('icon', 'icon-class');
然后

简单地说:

$menu->addChild('Home', ['route' => 'home_page'])
        ->setAttribute('icon', 'fa fa-home');

我建议使用
extras
而不是
attributes
,因为
attributes
用于呈现
li
元素的属性

$menu->addChild('Dashboard',数组(
“uri”=>“#”,
))->setAttribute('icon','icon class');

{{item.attribute('icon')}
可能会呈现为:

  • 鉴于:

    $menu->addChild('Dashboard',数组(
    “uri”=>“#”,
    ))->setExtra('icon','icon class');
    

    {{item.extra('icon')}
    
    可能只会呈现为:


  • 也可以看到这个答案:。

    我认为这个答案应该被接受为最终答案。在我的KnpMenuBundle版本中,被接受的一个甚至不起作用。
    $menu->addChild('Dashboard', array(
        'route' => 'admin_dashboard',
    ))->setAttribute('icon', 'icon-class');
    
    {{ item.attribute('icon') }}
    
    $menu->addChild('Home', ['route' => 'home_page'])
            ->setAttribute('icon', 'fa fa-home');