如何在数据表中获取对象的数据?

时间:2018-12-10 09:17:40

标签: symfony oop object datatables twig

我正在将数据从json文件导入到我的数据表中。

"columns": [
  {% for key, value in columns %}
    {
    "data": "{{ key }}"},
    {% endfor %}
]

像这样,我得到以下输出:

id  name            slug      icon  
2   Mitarbeiter     members   [object Object]   
3   Angebote        offers    [object Object]   
4   Produkte        products  [object Object]   
5   Felder          fields    [object Object]

要接收对象的数据,我将代码更改为:

"columns": [
      {% for key, value in columns %}
      {   "data": "{{ key }}.name",
      "defaultContent": "{{ key }}"},
      {% endfor %}
    ]

这对于对象来说效果很好,但是现在我的其他字段不再显示该值,而是显示列的标签:

id  name    slug    icon 
id  name    slug    icon    
id  name    slug    anchor  
id  name    slug    adjust  
id  name    slug    cloud

列转储:

array:5 [▼
  "id" => ReflectionProperty {#6092 ▶}
  "name" => ReflectionProperty {#6094 ▶}
  "slug" => ReflectionProperty {#6096 ▶}
  "icon" => ReflectionProperty {#6097 ▶}
]

这是另一种方法:

   "columns": [
      {% for key, value in columns %}
      {% if key is iterable %}
      {"data": "{{ key }}"},
      {% else %}
      {"data": "{{ key }}.name"},
      {% endif %}
      {% endfor %}
    ]

但是这里我只得到icons行的输出...


json文件是这样的:

[{"id":2,"name":"Mitarbeiter","icon":{"id":2,"name":"anchor"},"slug":"members"},{"id":3,"name":"Angebote","icon":{"id":1,"name":"adjust"},"slug":"offers"},{"id":4,"name":"Produkte","icon":{"id":1,"name":"adjust"},"slug":"products"},{"id":5,"name":"Felder","icon":{"id":1,"name":"cloud"},"slug":"fields"}]

2 个答案:

答案 0 :(得分:1)

最后找到了解决方法:

"columnDefs": [
    {
        "render": function (data, type, row) {
          var type = typeof data;
          if(type == "object"){
            return data.name;
          } else {
            return data;
          }

        },
        "targets": "_all"
      }
    ],
"columns": [
     {% for key, value in columns %}
     {   "data": "{{ key }}"},
     {% endfor %}
   ]

答案 1 :(得分:-1)

使用方法:of_type('object')

"columns": [
    {% for key, value in columns %}
        {
            "data": "{% if key is of_type('object') %}{{ key }}.name{% else %}{{ key }}{% endif %}"},
    {% endfor %}
    { "data": "id" }
]