【问题标题】:Twig Array to string conversionTwig 数组到字符串的转换
【发布时间】:2015-12-14 12:44:18
【问题描述】:

这可能相对容易做到,但我是 Twig 新手,我很沮丧。

我正在根据这个答案改编代码:https://stackoverflow.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 的转储函数它什么也不返回。似乎它甚至没有首先将它加载到数组中。如何将信息加载到新数组中。

【问题讨论】:

    标签: php arrays string for-loop 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}}
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    猜你喜欢
    • 2023-03-26
    • 2017-03-05
    • 1970-01-01
    • 2017-10-27
    • 2015-02-21
    相关资源
    最近更新 更多