0

我有一个 JTwig(Java 风格的树枝)模板,比如

SomeMagazine.twig:

bla bla bla, and I quote:
{% block quote %}
{% endblock%}

and some more bla bla bla and so on

调用这个的子模板看起来像:

MagQuote.twig:

{% extends  'SomeMagazine.twig' %}
{% block quote %}
{% include 'QuotAuthTemplate.twig' with { auth : quote.author } %} 
{% include 'QuotTextTemplate.twig' with { qtxt : quote.content } %} 
{% endblock %}
  1. 我想quote在开始时使用 1 个选项卡获取块的所有内容
  2. 请注意,我不能在它们中添加标签,MagQuote.twig因为它是由其他模板组成的,因此标签模板包含只会标签整个其他模板的第一个标签
  3. 特别是对于 JTwig,我尝试创建自己的函数来选项卡内容(SimpleJtwigFunction,并将其添加到EnvironmentConfigurationat 模板实例化),但我无法弄清楚如何在模板内容上调用它,因为

    • 我不能(不知道如何)将它们保存在一个变量中,以便我可以在它上面调用我的方法;这个{% set 'tmpltCnt' = {% include ...和这个{% set 'tmpltCnt' = include ...语法都不起作用(我找不到它)
    • 我无法在QuotAuthTemplate.twigQuotTextTemplate.twig因为它们在其他不需要标签的地方使用它们的内容...
    • 我不能(不知道如何)通过包含本身调用该函数;这个{{ myTabbingMthd({% include ...和这个{{ myTabbingMthd(include ...语法都不起作用(我找不到它)

也许只是在这里遵循错误的方法?...

回答(有点……)

迄今为止最好的解决方案是添加一些“标签”;一个独特的字符串,我以后可以使用它进行模式匹配,以便以后逐行执行制表符并将其替换在删除标签的结果字符串上......仍然希望有人想出更好的东西......

此解决方案的问题

如果您碰巧需要(就像我一样)在另一个块中有一个缩进块,那么模式匹配会变得混乱,要求您为每个块定义不同的标签,否则在类似情况下查看其他答案

4

1 回答 1

0

这是您想要的那种东西,您可以使用标签(引导程序)包装模板:

{% block quote %}
    <div class="panel-heading ">
        <ul class="nav nav-tabs">
            <li class="active">
                <a data-toggle="tab" class="" role="tab" href="#tab1">Tab 1</a>
            </li>

            <li>
                <a data-toggle="tab" class="" role="tab" href="#tab2">Tab 2</a></li>
            </li>
        </ul>
    </div>
    <div class="panel-body">
        <div class="tab-content">
            <div id="tab1" class="tab-pane fade in active">
                {% include 'QuotAuthTemplate.twig' with { auth : quote.author } %} 
            </div>
            <div id="tab2" class="tab-pane fade">
                {% include 'QuotTextTemplate.twig' with { qtxt : quote.content } %} 
            </div>
        </div>
    </div>
{% endblock %}
于 2019-02-19T12:02:14.807 回答