2017-06-18 24 views
0

嗨,大家好,它是一个非常基本的问题,有机会看看几个问题在stackoverflow,但都是徒劳。树枝迭代/读取和获取值 - Octobercms

所以我有这个树枝变量名为“WordoftheDayfromDB”,我通过laravel pluck方法查询DB在我的控制器中后,通过一些数据传递。控制器存在于十月份的插件中。变量的内容如下所示

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

有人可以告诉我一种方法来从约twig变量中提取键和值。 什么我已经尝试过是以下几点:

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

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

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

回答

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月,创建新的树枝扩展是相当容易,其只给registerMarkupTags方法Plugin.php与滤波器阵列倾向于命名和功能名称。看到这个链接延长树枝在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 %} 
0

可以使用for循环,这样的键和值都是这样既可以访问:

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

喜谢谢你的答案我想,一个很好,但数值结果全阵列式这样 '''0:{“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}''' – Danish

+0

你确定它是一个对象,而不是json字符串吗? – dragontree