2016-04-08 12 views
0

私が何であるかを見つけるために、knp_menu.html.twigで検索私はKnpMenuでメニューを作っていると私は、サブメニューにオーバーライドKnpMenuのサブメニュー項目

を上書きしようとしているこれは、私が

$menu 
    ->addChild('sidebar.front.servers', ['route' => 'server_index']) 
    ->setExtras([ 
     'icon'    => 'fa fa-hdd-o', 
     'regex'    => '#^/servers/#', 
    ]) 
; 
$menu['sidebar.front.servers'] 
    ->addChild('nnanana', ['route' => 'server_index']) 
; 

サブメニュー項目を追加する方法ですサブメニューがレンダリングされます。

サブメニューのリストとアイテムをレンダリングする人が見つかりました。

{% block list %} 
    {% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %} 
     {% import _self as knp_menu %} 
     <ul{{ knp_menu.attributes(listAttributes) }}> 
      {{ block('children') }} 
     </ul> 
    {% endif %} 
{% endblock %} 

{% block children %} 
    {# save current variables #} 
    {% set currentOptions = options %} 
    {% set currentItem = item %} 
    {# update the depth for children #} 
    {% if options.depth is not none %} 
     {% set options = options|merge({'depth': currentOptions.depth - 1}) %} 
    {% endif %} 
    {# update the matchingDepth for children #} 
    {% if options.matchingDepth is not none and options.matchingDepth > 0 %} 
    {% set options = options|merge({'matchingDepth': currentOptions.matchingDepth - 1}) %} 
    {% endif %} 
    {% for item in currentItem.children %} 
     {{ block('item') }} 
    {% endfor %} 
    {# restore current variables #} 
    {% set item = currentItem %} 
    {% set options = currentOptions %} 
{% endblock %} 

これはサブメニューリストにクラスを配置します。

{%- set childrenClasses = item.childrenAttribute('class') is not empty ? [item.childrenAttribute('class')] : [] %} 
{%- set childrenClasses = childrenClasses|merge(['menu_level_' ~ item.level]) %} 
{%- set listAttributes = item.childrenAttributes|merge({'class': childrenClasses|join(' ') }) %} 

これは、すべてのサブメニュー項目

をレンダリングしかし、この

{% block item %} 
    {% import 'knp_menu.html.twig' as knp_menu %} 
    <a href="#">test</a> 
{% endblock %} 

のようにこれはされて働いて、メニューされていない私は、私のテンプレートでは、このブロックを上書きしようとしているときもはやレンダリングされていない、私はtestが表示されています...

私はまったく同じですovすべてのメニュー項目とこの作業を消去します。

このサブメニューを無効にするにはどうすればよいですか?

ありがとうございます。

答えて

0

サブメニュー項目を上書きする方法が見つかりました。

サブメニュー項目は、メインメニュー項目と同じコードで表示されます。だから、ちょうどこのような小枝条件を追加し、

{% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %} 
    <a href="#"> 
    <i class="{{ item.extra('submenu-icon') }}"></i> 
{% else %} 
の内側にやりたい上書きする