【问题标题】:How to Make header and footer files to include in multiple pages如何使页眉和页脚文件包含在多个页面中
【发布时间】:2015-05-20 05:05:32
【问题描述】:

想要创建包含在 Symfony2 中多个 html 页面中的通用页眉和页脚模板。 它给了我错误:

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

目录
来源
/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 -->

【问题讨论】:

  • 你的目录结构是什么?

标签: php symfony


【解决方案1】:

假设您在Resources 文件夹下有一个views 目录:

src/Acme/DemoBundle/Resources/views

views目录下创建一个通用布局模板文件(我们称之为layout.html.twig),header.html.twigfooter.html.twig。 并为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 %}

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

【讨论】:

    猜你喜欢
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2013-07-05
    • 2012-06-18
    相关资源
    最近更新 更多