$formsByKey */ $formsByKey = iterator_to_array($forms); foreach ($this->identifierManager->getWorkers() as $worker) { if (!$worker->getDefinition()->isEditableByUsers()) { continue; } $form = $formsByKey['identifier_'.$worker->getDefinition()->getId()]; $identifier = $viewData->findFirst(fn (int $key, PersonIdentifier $identifier) => $worker->getDefinition()->getId() === $identifier->getId()); if (null === $identifier) { $identifier = new PersonIdentifier($worker->getDefinition()); } $form->setData($identifier->getValue()); } } public function mapFormsToData(\Traversable $forms, &$viewData): void { if (!$viewData instanceof Collection) { throw new UnexpectedTypeException($viewData, Collection::class); } foreach ($forms as $name => $form) { $identifierId = (int) substr((string) $name, 11); $identifier = $viewData->findFirst(fn (int $key, PersonIdentifier $identifier) => $identifier->getId() === $identifierId); $definition = $this->identifierDefinitionRepository->find($identifierId); if (null === $identifier) { $identifier = new PersonIdentifier($definition); $viewData->add($identifier); } if (!$identifier->getDefinition()->isEditableByUsers()) { continue; } $worker = $this->identifierManager->buildWorkerByPersonIdentifierDefinition($definition); $identifier->setValue($form->getData()); $identifier->setCanonical($worker->canonicalizeValue($identifier->getValue())); } } }