Twig 数组到字符串的转换
Posted
技术标签:
【中文标题】Twig 数组到字符串的转换【英文标题】:Twig Array to string conversion 【发布时间】:2015-12-14 12:44:18 【问题描述】:这可能相对容易做到,但我是 Twig 新手,我很沮丧。
我正在根据这个答案改编代码:https://***.com/a/24058447
数组是通过这种格式用 php 制作的:
$link[] = array(
'link' => 'http://example.org',
'title' => 'Link Title',
'display' => 'Text to display',
);
然后通过 twig,我添加 html 到它,然后内爆:
<ul class="conr">
<li><span> lang_common['Topic searches']
% set info = [] %
% for status in status_info %
% set info = info|merge(['<a href=" status[\'link\'] " title=" status[\'title\'] "> status[\'display\'] </a>']) %
% endfor %
[info]|join(' | ')
</ul>
但我得到了:
Errno [8] 数组到字符串的转换 F:\localhost\www\twig\include\lib\Twig\Extension\Core.php 在第 832 行
当我删除此行时它已修复,但不显示:
[info]|join(' | ')
任何想法我可以如何正确地内爆?
** 更新**
使用 Twig 的转储函数它什么也不返回。似乎它甚至没有首先将它加载到数组中。如何将信息加载到新数组中。
【问题讨论】:
【参考方案1】:info 是一个数组,所以你应该简单地写
info|join(', ')
显示您的信息数组。
[info] 是一个具有一个值的数组:数组信息。
【讨论】:
注意:仅在关联数组的情况下使用值 @Delphine 如果你想加入关联数组的键,你可以先通过keys
过滤器传递数组,即 info | keys | join(', ')
【参考方案2】:
您不应该在 Twig 模板中构建复杂的数据结构。您可以像这样以更惯用和可读的方式实现所需的结果:
% for status in status_info %
<a href=" status.link " title=" status.title "> status.display </a>
% if not loop.last %|% endif %
% endfor %
【讨论】:
问题在于它的内爆。我需要用 ' | 分隔的每个元素' 但是当我手动执行此操作时,会有一个额外的“|”在页面的右侧。这是我能想到的仅获得所需数量的唯一方法。 嗯...这就是if not loop.last
应该防止...!?
好的。谢谢。我从来没有听说过。我对 Twig 很陌生。【参考方案3】:
您可以使用 json_encode 将数组序列化为字符串,然后显示漂亮 - 在 twig 中构建
数组|json_encode(常量('JSON_PRETTY_PRINT'))【讨论】:
请进一步解释 - 你的代码是做什么的?请记住,其他人应该能够从该代码中学习 这是最好的答案,因为它将整个结构转换为字符串,而如果变量是嵌套数组,join
将失败(例如尝试['a', ['b'] ]
)。对调试很有用。【参考方案4】:
如果需要关联数组:
info|json_encode(constant('JSON_PRETTY_PRINT'))|raw
【讨论】:
请在您的答案中添加一些解释,以便其他人可以从中学习以上是关于Twig 数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章