Как я могу получить данные объекта в таблицах данных? - PullRequest
0 голосов
/ 10 декабря 2018

Я получаю данные из файла 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 голосов
/ 10 декабря 2018

Наконец-то нашли решение:

"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 %}
   ]
0 голосов
/ 10 декабря 2018

Действительно использовать: of_type ('object')

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