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 %}
大家好,这是一个非常基本的问题,有机会在 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 %}