创建Twig HTML布局的最佳做法(母版页)

时间:2016-03-31 07:58:53

标签: php html twig

我一直在开发C#/ASP.net MVC-App 5年,我现在正在学习PHP

C#中,我可以为每个新网站使用RenderBody,因此新的HTML内容将在RenderBody()中被替换。然后,我每个站点只有一个新的局部视图和一个新的控制器:

 <html>
  <head>
    <title></title>
  </head>
  <body>RenderBody()</body>
</html>

使用Twig时,我有一个骨架布局:

<html>
  <head>
    <title></title>
  </head>
  <body>{%block ablock%}{%endblock%}</body>
</html>

对于每个新网站,我需要制作一个新的child.twig文件并扩展主要版面,然后覆盖“ablock&#39;”。通过这种方式,我仍然需要一个PHP文件(让我们称之为index1.phpindex2.php等),它们以child.twig作为参数调用twig加载函数。最后,我必须为控制器创建2个视图(child.twig + index.php)和另外一个php文件。所以我的问题是:

使用Twig在MVC中创建HTML-Masterpage的最佳方法是什么?

我找不到任何提及最佳实践的公共项目/教程。

提前致谢。

1 个答案:

答案 0 :(得分:3)

我总是使用共享所有页面的内容创建一个通用模板:

  

generalTemplate.html

driver.SwitchTo().Alert().Accept();

然后创建继承通用模板的子项:

  

oneChild.html

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <title>{{ page_title }}</title>
    <meta name="Author">
    <link rel="shortcut icon" href="{{project_path}}resources/images/favicon.ico">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Here put the general CSS and JS -->
    {% block head %} {% endblock %}
  </head>
  <body>
    <header>
    </header>
    {% block content %}{% endblock %}
    <footer>
    </footer>
  </body>
</html>
  

的index.php

{% extends "generalTemplate.html" %}

{% block head %}
<!-- Specific libraries css and js -->
{% endblock %}

{% block content %}
<!-- Specific HTML content -->
{% endblock %}

无论如何,有一个关于Twig的精美文档,非常详细:http://twig.sensiolabs.org/documentation