2015-05-17 39 views
0

我試圖實現下面的菜單,但出於某種原因,如果我導航到3級和4級,它不會顯示菜單的中間部分(2級和3級)。如果我在3級,然後1,2,3應該是可見的。如果我在4級,那麼所有的水平。這就是我想要達到的目標。通過擴展樹枝模板創建一個小調菜單

我讀整個templating documentation,this post和一些更多,但無法找到爲什麼我的代碼不能工作。

預計:

FRONTEND - BACKEND 
---------------------- 
COUNTRY | LEAGUE  -> After selecting FRONTEND in level 1 above 
---------------------- 
INDEX | LIST | CREATE -> After selecting COUNTRY in level 2 above 
---------------------- 
Countries will appear here after selecting LIST in level 3 above 

我的失敗嘗試:

FRONTEND - BACKEND 
---------------------- 
INDEX | LIST | CREATE -> After selecting COUNTRY in level 2 above 
---------------------- 

FRONTEND - BACKEND 
---------------------- 
Countries will appear here after selecting LIST in level 3 above 

base.html.twig

Football 
     BackendBundle 
     ..... 
     FrontendBundle 
     Resources 
      views 
       Default 
        index.html.twig 
       Country 
        index.html.twig 
        list.html.twig 

base.html.twig

<body> 
    <a href="{{ path('football_frontend_default_index') }}">FRONTEND</a> 
    &nbsp;&dash;&nbsp; 
    <a href="{{ path('football_backend_default_index') }}">BACKEND</a> 
    <hr /> 
    {% block body %}{% endblock %} 
    {% block javascripts %}{% endblock %} 
</body> 

默認/ index.html.twig

{% extends '::base.html.twig' %} 

{% block body %} 
    {% spaceless %} 
     <a href="{{ path('football_frontend_country_index') }}">COUNTRY</a> 
     &nbsp;|&nbsp; 
     <a href="{{ path('football_frontend_league_index') }}">LEAGUE</a> 
     <hr /> 
    {% endspaceless %} 
{% endblock %} 

國家/ inedx.html.twig

{% extends 'FootballFrontendBundle:Default:index.html.twig' %} 

{% block body %} 
    {% spaceless %} 
     <a href="{{ path('football_frontend_country_index') }}">Index</a> 
     &nbsp;|&nbsp; 
     <a href="{{ path('football_frontend_country_list') }}">List</a> 
     &nbsp;|&nbsp; 
     <a href="{{ path('football_frontend_country_create') }}">create</a> 
     <hr /> 
    {% endspaceless %} 
{% endblock %} 

COUNTR Y/list.html.twig

{% extends 'FootballFrontendBundle:Country:index.html.twig' %} 

{% block body %} 
    {% spaceless %} 
     COUNTRY - List 
     <hr /> 
     .... 
    {% endspaceless %} 
{% endblock %} 

回答

1

當您在文件Country/list.html.twig使用body塊,更換了一個在根文件base.html.twig。它與PHP中的方法繼承相同。如果你想要做你試圖實現什麼,你有兩種方式:

  1. 使用{{父()}}您的塊中,顯示該塊的父模板內容
  2. 使用不同的名稱爲您的塊爲每個子模板

例如

默認/ index.html.twig

{% extends '::base.html.twig' %} 

{% block body %} 
    {% spaceless %} 
     <a href="{{ path('football_frontend_country_index') }}">COUNTRY</a> 
     &nbsp;|&nbsp; 
     <a href="{{ path('football_frontend_league_index') }}">LEAGUE</a> 
     <hr /> 
    {% endspaceless %} 
    {% block body2 %}{% endblock %} 
{% endblock %} 

國家/ inedx.html.twig

{% extends 'FootballFrontendBundle:Default:index.html.twig' %} 

{% block body2 %} 
    {% spaceless %} 
     <a href="{{ path('football_frontend_country_index') }}">Index</a> 
     &nbsp;|&nbsp; 
     <a href="{{ path('football_frontend_country_list') }}">List</a> 
     &nbsp;|&nbsp; 
     <a href="{{ path('football_frontend_country_create') }}">create</a> 
     <hr /> 
    {% endspaceless %} 
    {% block body3 %}{% endblock %} 
{% endblock %} 
+0

感謝您的回答和例子。我想我會用'父母'。 +1 – BentCoder