/
BuildCollectionFormBuilder.php
49 lines (44 loc) · 1.67 KB
/
BuildCollectionFormBuilder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
namespace Oro\Bundle\ApiBundle\Processor\Subresource\ChangeSubresource;
use Oro\Bundle\ApiBundle\Form\FormHelper;
use Oro\Bundle\ApiBundle\Form\Type\CollectionType;
use Oro\Bundle\ApiBundle\Form\Type\ObjectType;
use Oro\Bundle\ApiBundle\Processor\Subresource\ChangeSubresourceContext;
use Symfony\Component\Form\FormBuilderInterface;
/**
* Builds the form builder for a collection based change sub-resource request and sets it to the context.
*/
class BuildCollectionFormBuilder extends BuildFormBuilder
{
private bool $enableAdderAndRemover;
public function __construct(
FormHelper $formHelper,
bool $enableFullValidation = false,
bool $enableAdderAndRemover = false
) {
parent::__construct($formHelper, $enableFullValidation);
$this->enableAdderAndRemover = $enableAdderAndRemover;
}
/**
* {@inheritDoc}
*/
protected function addFormFields(FormBuilderInterface $formBuilder, ChangeSubresourceContext $context): void
{
$entryDataClass = $context->getClassName();
$entryFormOptions = $this->getEntryFormOptions($context);
if (\array_key_exists('data_class', $entryFormOptions)) {
$entryDataClass = $entryFormOptions['data_class'];
unset($entryFormOptions['data_class']);
}
$formBuilder->add(
$context->getAssociationName(),
CollectionType::class,
[
'by_reference' => !$this->enableAdderAndRemover,
'entry_data_class' => $entryDataClass,
'entry_type' => ObjectType::class,
'entry_options' => $entryFormOptions
]
);
}
}