Twig迭代/读取并获得值 - Octobercms

时间:2017-06-18 15:11:21

标签: php laravel twig octobercms

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

所以我有这个名为" WordoftheDayfromDB"的twig变量,我通过laravel pluck方法在我的控制器中查询DB后从一些数据传递到该变量。控制器存在于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 %}的某种组合。 我非常感谢你的回答! 谢谢你阅读我的问题。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

所以即使我预期,答案也相当复杂!我不得不做很多挫折才能真正理解这件事。 首先,我正在做一个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月份,新枝条扩展的创建相当容易,只是在Plugin.php中给出registerMarkupTags方法,过滤器数组与名称和函数名称相对应。请参阅此链接以在octobercms here

中扩展树枝

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

{% 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 %}