DevCraft Документации
Руководства

Вложенные поля v210.1.0

Схема донора ParserKit: вложенные пути, flatten, группы, is_terminal и обрезка веток.

Зачем вложенность

Реальные API и XML часто отдают не плоский список полей, а дерево: объект area с полем name, вложенные begin-area / end-area и т.д. В 210.1.0 ParserKit строит цепочки путей через точку (и атрибуты @… для XML), чтобы в Twig писать {{ area.name }}, а не только {{ name }}.

Что попадает в схему

Тип узлаВ схемеВ Twig-выражениях
Лист (leaf) — текст/числоПуть + alias + тип{{ alias }} или {{ path }}
Группа (group) — объект без своего значенияПуть, роль groupНе выводится сам по себе; дети через точку
Атрибут XMLПуть, напр. link@href{{ link@href }}
Список однотипных детейПуть без .0.; тип listЦикл {% for item in aliases %}{{ item.name }}{% endfor %}

Промежуточные объекты не создают «пустых» тегов — только группировку. Ложный «успех» с пустыми путями не записывается.

Flatten (развёртка путей)

При опросе сервис обходит ответ без фиксированного лимита глубины и собирает листья:

artist
├── name          → {{ name }}
├── area          → group
│   └── name      → {{ area.name }}
├── begin-area    → group
│   └── name      → {{ begin-area.name }}
└── …

Пути хранятся в schema_json донора. Все шаблоны этого донора используют одну схему.

Списки внутри объекта

Если у узла много однотипных детей (массив), в схему попадает путь без числового сегмента (.0. в имени нет):

aliases.alias   → тип list; дочерние поля — aliases.alias.name и т.п.

Перебор элементов — в Twig: {% for row in aliases.alias %}{{ row.name }}{% endfor %}. Окно «Схема» на строке карты подставляет цикл с учётом типа list.

«Последний узел» (is_terminal)

На карточке донора у строк группы есть переключатель «Обрезать потомков» (is_terminal в schema_json).

ДействиеРезультат
Пометка включенаПути ниже этой ветки не попадают в теги и в опрос
Пометка снятаПри следующем опросе ветка снова углубляется

Только на доноре

Пометка «последний узел» задаётся на карточке донора, не в отдельном шаблоне. Сохранение terminals — через donor_save (поле schema_terminals).

Пример

  1. Опрос artist-ответа — много полей внутри area.
  2. Отметьте группу area как «последний узел» → Перестроить схему / сохранить.
  3. Поле area.name исчезнет из схемы; name и поля вне ветки area останутся.

Роли в таблице схемы

Колонка / признакЗначение
ПутьКанонический путь в ответе
AliasКороткое имя для Twig (необязательно)
Типstring, list, object и др.
Рольleaf или group
Последний узелТолько у group: ветка обрезана (is_terminal)
ПримерОбразец значения из опроса

Связь с шаблоном

  • Окно «Схема» в шаблоне показывает дерево: группы и листья, alias · path · тип.
  • Подсказки и вставка фрагментов — из листьев и списков с типом list.
  • Первичный ключ выбирается только из листьев с непустым путём (в списке — alias, если задан).

См. также

На этой странице