如何在包含的模板之间共享变量(或有其他方法)?

时间:2019-11-20 09:04:48

标签: symfony twig pimcore

对于这个问题,我有一个非常具体的用例:我正在为Pimcore区域砖构建一个库,其中各种砖共享某些属性。像至少有10块砖可以选择在零到五之间的(Twitter引导程序)边距。

UI的用户可以定义标题类型,页边距顶部和将显示的某些标题的颜色。虽然标题类型的定义是特定于,但许多其他积木可能会使用边距顶部和颜色。

所以我为边距组件制作了一个树枝模板

{% set marginTopSel = pimcore_select('marginTopSel', {
    store: [1,2,3,4,5],
    reload: true,
    width: 80
}) %}

{% if editmode %}
    <div class="container editprop-container no-material">
        <div class="row">
            <div class="col col-xs-12 col-sm-6 col-md-2">
                <div class="custom-control custom-checkbox">
                    <label>{{ "Margin Top"|trans }}</label><br/>
                    {{ marginTopSel | raw }}
                </div>
            </div>
        </div>
    </div>
{% endif %}

并通过以下方式将其包含在父模板中:

{% include 'marginselectors.html.twig' %}

但是在父模板中,我需要变量marginTopSel作为输出:

{% set marginTop = marginTopSel.getData()|default("") %}
<{{ type }} class="mt-{{ marginTop}}">{{ pimcore_input('headline_text',{'placeholder':'Headline'}) }}</{{ type }}>

这是不可能的:

  

marginTopSel未定义

有一种方法可以使用with关键字:{% include 'template.html' with {'foo': 'bar'} %}在Twig中将变量传递给子模板。但是,如何反过来将包含在模板中的变量定义到父模板中呢?

1 个答案:

答案 0 :(得分:-1)

有几种解决方法。

您可以创建一个..
-Twig扩展以获取所需的var。 Docs
-服务并将变量注入为全局树枝变量。 Docs
-具有逻辑和模板的控制器,并嵌入控制器而不是仅包含模板。 Docs