[英]How to populate up variables from included twig template
我希望能夠從包含的樹枝模板中填充變量,就像在擴展另一個模板時一樣。 這是一個例子:
我有base.twig如下:
{# base.twig #}
<html>
<head></head>
<body class="body {{class_from_index}}">
<nav>...</nav>
{% block content %}
{% endblock %}
<footer>...</footer>
</body>
</html>
和index.twig如下:
{# index.twig #}
{% extends "base.twig" %}
{% set class_from_index = 'index' }
{% block content %}
<div>My actual content</div>
{% endblock %}
做這樣的變量class_from_index
填充到base.twig
,當我渲染index.twig
。 但是,如果我有像這樣的gallery.twig:
{# gallery.twig #}
{% set class_from_index = 'gallery' %}
<div>
A gallery
</div>
並在index.twig
添加{% include gallery.twig %}
,變量class_from_index
不會填充到index.twig
或base.twig
。 我知道,如果gallery.twig
擴展index.twig
和index.twig
擴展base.twig
,這將起作用,但事實並非如此。
有沒有辦法實現我要解釋的內容? 謝謝 :)
如果main.twig包含:
{% include "gallery.twig" %}
編譯結果將是:
protected function doDisplay(array $context, array $blocks = array())
{
// line 1
$this->loadTemplate("gallery.twig", "main.twig", 1)->display($context);
}
並且如果gallery.twig包含:
{% set var = 42 %}
結果是:
protected function doDisplay(array $context, array $blocks = array())
{
// line 1
$context["var"] = 42;
}
如您所見,上下文沒有作為參考,因此您的變量無法填充。
原因很明顯。 從較低范圍到較高范圍使用變量看起來很奇怪。 就像您使用PHP一樣:
<?php
function gallery() {
$var = 42;
}
gallery();
echo $var;
必須通過另一種方式設計模板架構,才能更好地解決您的問題。 這個問題本身並不重要,完全是出於良好實踐。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.