src/Transformer/JsonSchemaForm/ArrayTransformer.php line 43
<?phpdeclare(strict_types=1);/*** Copyright (c) 2019 TECLA Consulting Group oü.* All rights reserved.** This unpublished material is proprietary to TECLA Consulting Group oü.* All rights reserved. The methods and* techniques described herein are considered trade secrets* and/or confidential. Reproduction or distribution, in whole* or in part, is forbidden except by express written permission* of TECLA Consulting Group oü.** @author Matúš Sýkorjak <matus@tecla.no>* @copyright 2019 TECLA Consulting Group oü*/namespace App\Transformer\JsonSchemaForm;use App\Exception\JsonSchemaForm\TransformerException;use App\Util\JsonSchemaForm\ResolverInterface;use Symfony\Component\Form\FormInterface;use Symfony\Component\Form\FormTypeGuesserInterface;use Symfony\Contracts\Translation\TranslatorInterface;class ArrayTransformer extends AbstractTransformer{/*** @var ResolverInterface*/protected $resolver;public function __construct(TranslatorInterface $translator, ?FormTypeGuesserInterface $validatorGuesser, ResolverInterface $resolver){parent::__construct($translator, $validatorGuesser);$this->resolver = $resolver;}/*** {@inheritdoc}*/public function transform(FormInterface $form, array $extensions = [], string $widget = null): array{$children = [];foreach ($form->all() as $name => $field) {$transformerData = $this->resolver->resolve($field);$transformedChild = $transformerData['transformer']->transform($field, $extensions, $transformerData['widget']);$children[] = $transformedChild;if (true === $transformerData['transformer']->isRequired($field)) {$required[] = $field->getName();}}if (true === empty($children)) {$entryType = $form->getConfig()->getAttribute('prototype');if (null === $entryType) {throw new TransformerException('Cannot infer the json-schema representation of a an empty Collection or array-like type without the option "allow_add" (to check the proptotype). Evaluating "' . $form->getName() . '"');}$transformerData = $this->resolver->resolve($entryType);$children[] = $transformerData['transformer']->transform($entryType, $extensions, $transformerData['widget']);$children[0]['title'] = 'prototype';}$schema = ['type' => 'array','title' => $form->getConfig()->getOption('label'),'items' => $children[0],];$schema = $this->addCommonSpecs($form, $schema, $widget, $extensions);return $schema;}}