如何使页眉和页脚文件包含在多个页面中

时间:2015-05-20 05:05:33

标签: php symfony

想要创建Symfony2中几个html页面中包含的常见页眉和页脚模板。 它给了我错误:

  

无法在第16行的base.html.twig中找到模板“Bundle:Controller:header.html.twig”。

     

指南
  SRC
     / HelloBundle
          /控制器
              MainController.php
          /资源
              /视图
                 /主要
                    header.html.twig
                    index.html.twig

我的index.html.twig文件中的代码:

<div class="container">
 <div id="header">
{% include "HelloBundle:Main:header.html.twig" %}
</div>
</div>

在我的base.html.twig文件中:

    <html>
    <head>
        <meta charset="UTF-8" />
        <title></title>
        {% block stylesheets %}
    </head>
    <body>
16:         {% include 'Bundle:Controller:header.html.twig' %}
        {% block body %}

        {% endblock %}

          {% block javascripts %}            
           {% endblock %}
    </body>
</html>

和我的header.html.twig

 <nav class="navbar navbar-default" role="navigation">
      <div class="container-fluid">

      <div class="navbar-header">
          <ul class="nav navbar-nav">
       <li class="active"><a href="{{ path('index') }}">Home</a></li>                          
       <li><a href="{{ path('english') }}"> LEARNING</a></li>

          </ul>

           </div>   <!-- collapse navbar-collapse -->
      </div>   <!-- container-fluid-->
    </nav>   <!--navbar navbar-default -->

1 个答案:

答案 0 :(得分:4)

假设views文件夹下有Resources目录:

src/Acme/DemoBundle/Resources/views

layout.html.twig目录下创建一般布局模板文件(让我们称之为header.html.twig),footer.html.twigviews。 并为layout.html.twig文件写一个标记:

<html>
    <head>
        <meta charset="UTF-8" />
        <title></title>
    </head>
    <body>
        <div id="header">
        {% include('@AcmeDemo/header.html.twig') %}
        </div>

        <div id="wrapper">
        {% block content %}{% endblock %}
        </div>


        <div id="footer">
        {% include('@AcmeDemo/footer.html.twig') %}
        </div>
    </body>
</html>

那就是它。如果你想创建另一个模板(让我们说product.view.html.twig),只需扩展layout.html.twig

product.view.html.twig

{% extends '@AcmeDemo/layout.html.twig' %}
{% block content %}{% endblock %}

请注意,我正在使用命名空间语法,我认为它更具可读性,并且它被认为比通常的语法更快。