Php 创建细枝HTML布局(母版页)的最佳实践

Php 创建细枝HTML布局(母版页)的最佳实践,php,html,twig,Php,Html,Twig,我已经开发C#/ASP.netMVC应用程序5年了,现在正在学习PHP 在C#中,我可以为每个新站点使用RenderBody,因此新的HTML内容将在RenderBody()中替换。然后,每个站点只有一个新的局部视图和一个新控制器: <html> <head> <title></title> </head> <body>RenderBody()</body> </html>

我已经开发
C#/ASP.net
MVC应用程序5年了,现在正在学习
PHP

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

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

RenderBody()
使用细枝时,我有一个骨架布局:

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

{%block ablock%}{%endblock%}
对于每个新站点,我需要创建一个新的
child.twig
文件并扩展主布局,然后覆盖“锁定”。通过这样做,我仍然需要一个PHP文件(让我们称它们为
index1.PHP
index2.PHP
,等等),它以
child.twig
作为参数调用twig load函数。最后,我必须为控制器创建两个视图(child.twig+
index.php
)和一个以上的php文件。所以我的问题是:

用Twig在MVC中创建HTML母版页的最佳方法是什么?

我找不到任何公共项目/教程提到这样做的最佳实践


提前感谢。

我总是创建一个通用模板,其中包含共享所有页面的内容:

generalTemplate.html


无论如何,关于Twig有一个非常详细的文档:

看看Twig教程(这是免费的)。你需要的东西都应该在那里。我去看看。米格尔。但是你仍然需要在一个额外的php文件中调用oneChild.html,对吗?因此,在index.php中:$template->display()/echo twig.render()。但是我只想要一个新视图的一个页面,比如oneChild.html.No。在您的.php中,您将我写的内容放在响应中。
<!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>
{% extends "generalTemplate.html" %}

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

{% block content %}
<!-- Specific HTML content -->
{% endblock %}
require_once 'Twig/Autoloader.php'; 

Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem(path_to_generalTemplatehtml);
$twig = new Twig_Environment($loader, array());

$template = $twig->loadTemplate($path_to_oneChildhtml);

$data = array();
$data['project_title'] = $project_title;
$data['project_path'] = $project_path;

echo $template->render($data);