/** * Adds the breadcrumb to the serialization. * * @param StructureBehavior $document * @param VisitorInterface $visitor */ private function addBreadcrumb(StructureBehavior $document, VisitorInterface $visitor) { $items = []; $parentDocument = $this->inspector->getParent($document); while ($parentDocument instanceof StructureBehavior) { $item = []; if ($parentDocument instanceof UuidBehavior) { $item['uuid'] = $parentDocument->getUuid(); } $item['title'] = $parentDocument->getStructure()->getProperty('title')->getValue(); $items[] = $item; $parentDocument = $this->inspector->getParent($parentDocument); } $items = array_reverse($items); array_walk($items, function (&$item, $index) { $item['depth'] = $index; }); $visitor->addData('breadcrumb', $items); }