我一直在开发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.php
,index2.php
等),它们以child.twig
作为参数调用twig加载函数。最后,我必须为控制器创建2个视图(child.twig
+ index.php
)和另外一个php文件。所以我的问题是:
使用Twig在MVC中创建HTML-Masterpage的最佳方法是什么?
我找不到任何提及最佳实践的公共项目/教程。
提前致谢。
答案 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