Вы здесь

Как распарсить Double field во Views при выводе в формате JSON через модуль RESTful (D8)?

0

Приветствую!

Решил заценить RESTful модуль в свеженьком Drupal 8.1.x и сразу же возникла проблема.

Итак, есть тип материала Статья, в котором добавлено поле Double field (название: field_my_field, состоящее из двух полей, типа Текст). Делаю вьюху с выводом REST export, ставлю вывод JSON, добавляю это поле дабл филд и сохраняю.

Вижу в выводе следующее: два моих текстовых поля (например, field_first и field_second) слились в одно поле:

[
  {
    "field_my_field": "<div>field_first</div>, <div>field_second</div>"
  }
]

Можно ли выводить поле field_my_field, например, в таком виде?

[
  {
    "field_my_field": [{
      "field_first": "value первого поля", 
      "field_second": "value второго поля"
    }]
  }
]

Или хотя бы вот такой:

[
  {
    "field_my_field": [{ "value первого поля", "value второго поля" }]
  }
]

Кстати, точно так же ведёт себя Field collection.

Очень надеюсь на помощь.

P.S. ещё, забыл, подскажите пожалуйста, это только в D8 так работают подобные модули или в D7 так же?

Версия Drupal: 
8.x
Связанные проекты: 
Double fieldField collection
Вопрос задан 19.05.2016 - 21:19

Ответы

1

Делай вывод не полями а сущностью (entity) и получишь свойство у объекта ноды

"field_my_field": [{
  "first": "first",
  "second": "second"
}]
Ответ дан 20.05.2016 - 09:59
Аватар пользователя drupby
drupby
456

Если сущностью, то тогда нельзя задать, например, картинке вывод в нужном формате (Image Cache).

Комментарий оставлен 20.05.2016 - 20:02

Так нужно определиться, что нужно получить - сами данные или готовые к выводу данные. Если нужен вывод полей, но не совсем в том виде устраивает, то его же можно переопределить в настройках.

Комментарий оставлен 20.05.2016 - 20:18

На самом деле, нужно получить тупо title + image (в определённом формате) + массив double field (с возможностью выбора значения каждого из этих двух элементов).

Комментарий оставлен 20.05.2016 - 20:52

Значит как вариант добавить дважды double field, в первом либо скрыть в настройках второй элемент, либо переопределить вывод и токеном выводить значение первого, а во втором - сделать наоборот. Любое же поле можно выводить неограниченное количество раз.

Комментарий оставлен 20.05.2016 - 21:05

Вычислил трабл: если это поле с множественным/безлимитным значением, то способ, предложенный drupby, не будет работать — все значения из first будут слиты в одно значение (через разделитель) и тоже самое будет с second.

"field_my_field": [{
  "first": "first_1<разделитель>first_2<разделитель>first_3<разделитель>...",
  "second": "second_1<разделитель>second_2<разделитель>second_3<разделитель>..."
}]

Можно ли это победить? В идеале, конечно же, вот так бы сделать:

"field_my_field": [{
  "0": [{
    "first": "value",
    "second": "value"
  }],
  "1": [{
    "first": "value",
    "second": "value"
  }],
  ...
}]
Комментарий оставлен 22.05.2016 - 17:45

Так я же писал переопределить в настройках поля вывод и токенами можно задавать в любом виде.

Комментарий оставлен 30.05.2016 - 09:16