Рекомендации по созданию Twig HTML Layout (Masterpage)

Я разрабатываю C#/ASP.net MVC-приложение в течение 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 и расширить основной макет, а затем переопределить «обход». Делая это так, мне все еще нужен PHP-файл (назовем его index1.php , index2.php и т. Д.), index2.php вызывает функции загрузки twig с параметром child.twig в качестве параметра. В конце концов, мне нужно создать 2 представления ( child.twig + index.php ) и еще один php-файл для контроллера. Поэтому мой вопрос:

Каков наилучший способ создания HTML-Masterpage в MVC с Twig?

Я не мог найти какой-либо публичный проект / учебник, в котором упоминаются лучшие практики для этого.

Заранее спасибо.

Related of "Рекомендации по созданию Twig HTML Layout (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