Fix loading data for customfield, using proper DI

This commit is contained in:
Julien Fastré 2023-07-23 00:25:15 +02:00
parent 2ad82e8cc1
commit 9690359dfa
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
3 changed files with 23 additions and 46 deletions

View File

@ -35,12 +35,12 @@ services:
tags: tags:
- { name: 'form.type', alias: 'custom_field' } - { name: 'form.type', alias: 'custom_field' }
chill.custom_field.text: Chill\CustomFieldsBundle\CustomFields\CustomFieldText:
class: Chill\CustomFieldsBundle\CustomFields\CustomFieldText
autowire: true autowire: true
autoconfigure: true autoconfigure: true
tags: tags:
- { name: 'chill.custom_field', type: 'text' } - { name: 'chill.custom_field', type: 'text' }
chill.custom_field.text: '@Chill\CustomFieldsBundle\CustomFields\CustomFieldText'
chill.custom_field.number: chill.custom_field.number:
class: Chill\CustomFieldsBundle\CustomFields\CustomFieldNumber class: Chill\CustomFieldsBundle\CustomFields\CustomFieldNumber
@ -59,12 +59,12 @@ services:
tags: tags:
- { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\NumberType } - { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\NumberType }
chill.custom_field.choice: Chill\CustomFieldsBundle\CustomFields\CustomFieldChoice:
class: Chill\CustomFieldsBundle\CustomFields\CustomFieldChoice
autowire: true autowire: true
autoconfigure: true autoconfigure: true
tags: tags:
- { name: 'chill.custom_field', type: 'choice' } - { name: 'chill.custom_field', type: 'choice' }
chill.custom_field.choice: '@Chill\CustomFieldsBundle\CustomFields\CustomFieldChoice'
chill.custom_field.custom_fields_group_linked_custom_fields: chill.custom_field.custom_fields_group_linked_custom_fields:
class: Chill\CustomFieldsBundle\Form\Type\LinkedCustomFieldsType class: Chill\CustomFieldsBundle\Form\Type\LinkedCustomFieldsType

View File

@ -353,7 +353,7 @@ class LoadPostalCodes extends AbstractFixture implements OrderedFixtureInterface
->setCode($code[0]) ->setCode($code[0])
->setName(ucwords(strtolower($code[1]))); ->setName(ucwords(strtolower($code[1])));
if (null !== $code[3]) { if (null !== ($code[3] ?? null)) {
$c->setRefPostalCodeId($code[3]); $c->setRefPostalCodeId($code[3]);
} }

View File

@ -30,29 +30,21 @@ use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Environment; use Twig\Environment;
class LoadCustomFields extends AbstractFixture implements class LoadCustomFields extends AbstractFixture implements
ContainerAwareInterface,
OrderedFixtureInterface OrderedFixtureInterface
{ {
/** private $cfText;
* @var ContainerInterface
*/ private $cfChoice;
private $container;
/** /**
* @var CustomField
*/
private $customFieldChoice;
/**
* @var CustomField
*/
private $customFieldText;
/** /**
* LoadCustomFields constructor. * LoadCustomFields constructor.
*/ */
public function __construct(private readonly TranslatableStringHelper $translatableStringHelper) public function __construct(
{ private readonly EntityManagerInterface $entityManager,
private readonly CustomFieldChoice $customFieldChoice,
private readonly CustomFieldText $customFieldText,
) {
} }
//put your code here //put your code here
@ -68,41 +60,26 @@ class LoadCustomFields extends AbstractFixture implements
$manager->flush(); $manager->flush();
} }
public function setContainer(?ContainerInterface $container = null)
{
if (null === $container) {
throw new RuntimeException('The given container should not be null');
}
$this->container = $container;
}
private function createCustomFieldChoice() private function createCustomFieldChoice()
{ {
return new CustomFieldChoice( return $this->customFieldChoice;
$this->container->get(Environment::class),
$this->translatableStringHelper
);
} }
private function createCustomFieldText() private function createCustomFieldText()
{ {
return new CustomFieldText( return $this->customFieldText;
$this->container->get(Environment::class),
$this->translatableStringHelper
);
} }
private function loadData(ObjectManager $manager) private function loadData(ObjectManager $manager)
{ {
$personIds = $this->container->get(EntityManagerInterface::class) $personIds = $this->entityManager
->createQuery('SELECT person.id FROM ChillPersonBundle:Person person') ->createQuery('SELECT person.id FROM ChillPersonBundle:Person person')
->getScalarResult(); ->getScalarResult();
// get possible values for cfGroup // get possible values for cfGroup
$choices = array_map( $choices = array_map(
static fn ($a) => $a['slug'], static fn ($a) => $a['slug'],
$this->customFieldChoice->getOptions()['choices'] $this->cfChoice->getOptions()['choices']
); );
// create faker // create faker
$faker = \Faker\Factory::create('fr_FR'); $faker = \Faker\Factory::create('fr_FR');
@ -114,9 +91,9 @@ class LoadCustomFields extends AbstractFixture implements
$person = $manager->getRepository(Person::class)->find($id); $person = $manager->getRepository(Person::class)->find($id);
$person->setCFData([ $person->setCFData([
'remarques' => $this->createCustomFieldText() 'remarques' => $this->createCustomFieldText()
->serialize($faker->text(random_int(150, 250)), $this->customFieldText), ->serialize($faker->text(random_int(150, 250)), $this->cfText),
'document-d-identite' => $this->createCustomFieldChoice() 'document-d-identite' => $this->createCustomFieldChoice()
->serialize([$choices[array_rand($choices)]], $this->customFieldChoice), ->serialize([$choices[array_rand($choices)]], $this->cfChoice),
]); ]);
} }
} }
@ -148,7 +125,7 @@ class LoadCustomFields extends AbstractFixture implements
$manager->persist($customField0); $manager->persist($customField0);
// create text field // create text field
$this->customFieldText = (new CustomField()) $this->cfText = $customFieldText = (new CustomField())
->setActive(true) ->setActive(true)
->setName(['fr' => 'Remarques']) ->setName(['fr' => 'Remarques'])
->setSlug('remarques') ->setSlug('remarques')
@ -156,10 +133,10 @@ class LoadCustomFields extends AbstractFixture implements
->setType('text') ->setType('text')
->setOptions(['maxLength' => 5000]) ->setOptions(['maxLength' => 5000])
->setCustomFieldsGroup($cfGroup); ->setCustomFieldsGroup($cfGroup);
$manager->persist($this->customFieldText); $manager->persist($customFieldText);
// create choice field // create choice field
$this->customFieldChoice = (new CustomField()) $this->cfChoice = $customFieldChoice = (new CustomField())
->setActive(true) ->setActive(true)
->setName(['fr' => "Document d'identité"]) ->setName(['fr' => "Document d'identité"])
->setSlug('document-d-identite') ->setSlug('document-d-identite')
@ -190,6 +167,6 @@ class LoadCustomFields extends AbstractFixture implements
], ],
], ],
]); ]);
$manager->persist($this->customFieldChoice); $manager->persist($customFieldChoice);
} }
} }