繁体   English   中英

创建Twig HTML布局的最佳实践(主页)

[英]Best practices to create a Twig HTML Layout (Masterpage)

我已经开发了5年的C#/ASP.net MVC-App,我现在正在学习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'。 通过这种方式,我仍然需要一个PHP文件(让我们称之为index1.phpindex2.php等),它以child.twig作为参数调用child.twig加载函数。 最后,我必须为控制器创建2个视图( child.twig + index.php )和另外一个php文件。 所以我的问题是:

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

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

提前致谢。

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

generalTemplate.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>

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

oneChild.html

{% extends "generalTemplate.html" %}

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

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

的index.php

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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM