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 数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章

在Twig文件Symfony中获取数组对象的值

如何将对象转换为字符串(Twig & Symfony)?

检查数组TWIG中是否存在值

将文本附加到 Twig 中的变量

如何将查询url参数传递给twig模板

如何在树枝中转换数组块