Twig iterate/read 并获取值 - Octobercms

Twig iterate/read and get value - Octobercms

大家好,这是一个非常基本的问题,有机会在 Whosebug 上查看几个问题,但都是徒劳的。

所以我有一个名为 "WordoftheDayfromDB " 的树枝变量,在我的控制器中通过 laravel pluck 方法查询数据库后,我将一些数据传递给它。控制器存在于 octobercms 的插件中。变量内容如下图

{% set WordoftheDayfromDB = __SELF__.words %}
{{WordoftheDayfromDB}} # this output below object
["{\"id\":4,\"word_tr\":\"parazit\",\"slug_tr\":\"parazit\",\"word_gr\":\"\u03c0\u03b1\u03c1\u03ac\u03c3\u03b9\u03c4\u03bf\",\"slug_gr\":\"parasito\",\"pubordraft\":1,\"created_at\":\"2017-06-07 13:04:57\",\"updated_at\":\"2017-06-07 13:04:57\",\"deleted_at\":null,\"word_image\":\"\\/cropped-images\\/image2.jpg\",\"typeswb_id\":0}"]

谁能告诉我一种从 about twig 变量中提取键和值的方法。 我已经尝试过的是:

<pre> {{WordoftheDayfromDB.id}}</pre>

{% for item in WordoftheDayfromDB %} {{item.word_tr}} {% endfor %}

还有一些使用 {% if WordoftheDayfromDB is iterable %} 的组合。 非常感谢您的回答! 感谢您阅读我的问题。

您可以使用 for 循环,这样键和值都可以像这样访问:

{% for key, value in WordoftheDayfromDB %}
    <li>{{ key }}: {{ value }}</li>
{% endfor %}

所以答案比我预想的还要复杂!我不得不沮丧地进行大量挖掘,才能真正弄清这件事的真相。 首先,我正在做一个 cron 作业,我在文本类型字段中保存模型中的数据。这就是为什么如果你看到上面的结果即

{% set WordoftheDayfromDB = __SELF__.words %}
{{WordoftheDayfromDB}} # this output below object

["{\"id\":4,\"word_tr\":\"parazit\",\"slug_tr\":\"parazit\",\"word_gr\":\"\u03c0\u03b1\u03c1\u03ac\u03c3\u03b9\u03c4\u03bf\",\"slug_gr\":\"parasito\",\"pubordraft\":1,\"created_at\":\"2017-06-07 13:04:57\",\"updated_at\":\"2017-06-07 13:04:57\",\"deleted_at\":null,\"word_image\":\"\\/cropped-images\\/image2.jpg\",\"typeswb_id\":0}"]

它输出一个 JSON 字符串,太糟糕了,不能迭代或用它做一些事情。

为了解决这个问题,

  • 在树枝中创建 json_decode 过滤器。

  • 将过滤器应用于数组的值部分。

  • 使用变量[keyname] 方法访问数组的各个值。

我创建了一个树枝过滤器 json_decode 要创建过滤器,请参阅此 Link

而在 10 月份,创建新的 twig 扩展相当容易,只需在 Plugin.php 中提供 registerMarkupTags 方法,并将过滤器数组指向名称和函数名称。看到这个 link 在 octobercms here

中扩展树枝

现在,我们正在等待的部分,如何获取值并在 twig 模板中显示它们。这将是,通过使用上面相同的例子。这就是我所做的

{% set wordoftheday = __SELF__.words %}
{% for key, value in wordoftheday %}
  {% set decoded = value|json_decode %}
  # to get the indvisual values
  {{ decoded['id'] }} 
  {{ decoded['created_at'] }} 
{% endfor %}