【问题标题】:Twig: Template in template in for loopTwig:for循环中的模板中的模板
【发布时间】:2016-04-08 15:59:10
【问题描述】:

我正在加载一个 twig 模板,它包含一个 for 循环,该循环通过一个数组类型的变量运行并输出正常,现在我试图在 for 循环中包含一个 html 的 sn-p 并传入循环中的数据并填充子模板。

ma​​inSet.template.php

{% for set in sets %}
    {% include 'inner/set.template.php' with {'set'} only %}
{% endfor %}

inner/set.template.php,inner 是mainSet.template.php所在目录中的子文件夹。

set.template.php

<div class="set">
    <span>{{ set.name }}</span>
</div>

这是我得到的错误:

Fatal error:  Uncaught exception 'Twig_Error_Syntax' with message 'A hash key must be followed by a colon (:). Unexpected token "punctuation" of value "}" ("punctuation" expected with value ":") in "index" at line 4.' in C:\htdocs\vendor\twig\twig\lib\Twig\TokenStream.php:87
Stack trace:
#0 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(284): Twig_TokenStream-&gt;expect(9, ':', 'A hash key must...')
#1 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(188): Twig_ExpressionParser-&gt;parseHashExpression()
#2 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(84): Twig_ExpressionParser-&gt;parsePrimaryExpression()
#3 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(41): Twig_ExpressionParser-&gt;getPrimary()
#4 C:\htdocs\vendor\twig\twig\lib\Twig\TokenParser\Include.php(46): Twig_ExpressionParser-&gt;parseExpression()
#5 C:\htdocs\ in C:\htdocs\vendor\twig\twig\lib\Twig\TokenStream.php on line 87

将代码分解为自定义框架以将其全部发布在这里,初始树枝模板如下所示加载,并传入一组数据。

 $twigLoader = new Twig_Loader_Array(array(
      'index' => file_get_contents((!empty($dirLevel) ? $dirLevel : '').TEMPLATE_DIR . 'index' . TEMPLATE_EXT)
 ));
 ...
 $twig = new Twig_Environment($twigLoader);
 $page = $twig->render('index', $indexData);

$indexData

Array
(
    [sets] => Array
    (
        [0] => stdClass Object
        (
            [name] => test 1
        )

        [1] => stdClass Object
        (
            [name] => test 2
        )

        [2] => stdClass Object
        (
            [name] => test 3
        )
    )
)

是否有可能做我正在尝试的事情,我知道你可以在模板中包含模板所以也许我有一些语法错误!?

【问题讨论】:

    标签: php templates twig


    【解决方案1】:

    {% include 'inner/set.template.php' with {'set'} only %} 更改为{% include 'inner/set.template.php' with {'set':set} only %}

    关联数组的语法是{key1:value1, key2:value2, ...}

    【讨论】:

    • 在哈希键上使用引号设置'set'是可选的
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2017-08-06
    • 2023-03-24
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多