我有2個TWIG渲染塊在基礎和標準模板上工作。這兩個塊在頁面上呈現,所有在{% extends "base.php" %}
之前和{% block body %}{% endblock %}
之後的base.htm不會呈現,我明白了爲什麼我使用了renderblock
而不是render
,它應該呈現整個模板。 1我如何獲得整個模板來渲染,並且除非我使用for循環,否則{% block head %}
不會渲染,我相信有更好的方法來做這件事。編輯1:添加$data2
。TWIG:使用擴展和渲染塊渲染多個塊
API
$template = $twig->loadTemplate('event.htm');
echo $template->renderBlock('head', (array('heads' => $data2)));
echo $template->renderBlock('content', (array('events' => $data)));
base.htm
<html>
<head>
{% block head %}
{% for head in heads %}
<title>{{ head.title }}</title>
<meta charset="UTF-8">
</head>
<body>
<h1>{{ head.title2 }}</h1>
{% endfor %}
{% endblock %}
{% block body %}{% endblock %}
</body>
</html>
event.htm
{% extends "base.php" %}
{% block content %}
{% for event in events %}
{{event.uri}}
{{event.desc}}
{% else %}
no events!
{% endfor %}
{% endblock %}
$ DATA 2
Array ([0] => Array ([id] => 1 [uri] => /event1/1 [title] => some title))
1/Works。我認爲這是行不通的,因爲塊名稱與數組不同,必須使用「renderblock」。 2 /作品,我傳遞一個數組(第一個TWIG模板,認爲數組是預期的)。 '$ data2' ='Array([0] => Array([id] => 1 [uri] =>/event1/1 [title] =>一些標題)' – Jus