2

KnpMenuBundle を使用して nav-bar-menu に最後の日を書きました。途中でテンプレートにいくつかのパラメーターを与えてから、それに反応したいだけです。出来ますか?私はこれを試しました:

$menu->addChild('Registration', array('route' => 'fos_user_registration_register',
                                      'icon'  => array('glyphicon' => 'briefcase')));

そして、Twig テンプレートでこれを選択します。

{% if icon['glyphicon'] is defined %}
    <span class="glyphicon glyphicon-{{icon['glyphicon']}} "></span>
{% endif %}

私はたくさん試しましたが、何もうまくいきません。次に何を試すことができますか?

4

2 に答える 2

4

これが私がやった方法です

メニュークラス:

$menu->addChild('Home', array(
    'route' => 'home',
    'extras' => array('icon' => 'home')
));

テンプレートでのメニュー呼び出しで、特定の小枝テンプレートを要求します

{{ knp_menu_render('MyBundle:Menu:primaryNav', {'template': 'MyBundle:Menu:primaryNav.html.twig'}) }}

twig テンプレートで、knpmenubundle テンプレートをコピーして貼り付け、いくつかのブロックを編集します。これは、'extends' とテンプレートの継承を使って行うこともできます (おそらく、より良いアイデアです)。

icon の編集済みブロックの例:

{% block spanElement %}
<a href="#" class="dropdown-toggle">
    {% if item.extras.icon is defined %}<i class="icon-{{ item.extras.icon }}"></i>{% endif %}
    <span class="menu-text"> {{ block('label') }}</span>
    <b class="arrow icon-angle-down"></b>
</a>
{% endblock %}

あなたが必要としていたのは、おそらくメニュークラスのこの「エクストラ」フィールドでした:)

于 2013-09-30T13:17:27.447 に答える