【发布时间】:2016-04-08 15:59:10
【问题描述】:
我正在加载一个 twig 模板,它包含一个 for 循环,该循环通过一个数组类型的变量运行并输出正常,现在我试图在 for 循环中包含一个 html 的 sn-p 并传入循环中的数据并填充子模板。
mainSet.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->expect(9, ':', 'A hash key must...')
#1 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(188): Twig_ExpressionParser->parseHashExpression()
#2 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(84): Twig_ExpressionParser->parsePrimaryExpression()
#3 C:\htdocs\vendor\twig\twig\lib\Twig\ExpressionParser.php(41): Twig_ExpressionParser->getPrimary()
#4 C:\htdocs\vendor\twig\twig\lib\Twig\TokenParser\Include.php(46): Twig_ExpressionParser->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
)
)
)
是否有可能做我正在尝试的事情,我知道你可以在模板中包含模板所以也许我有一些语法错误!?
【问题讨论】: