translatableStringHelper = $translatableStringHelper; $this->translator = $translator; } //put your code here public function getOrder() { return 10003; } public function load(ObjectManager $manager) { $this->loadFields($manager); $this->loadData($manager); $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() { return new CustomFieldChoice( $this->translator, $this->container->get('templating'), $this->translatableStringHelper ); } private function createCustomFieldText() { return new CustomFieldText( $this->container->get('request_stack'), $this->container->get('templating'), $this->translatableStringHelper ); } private function loadData(ObjectManager $manager) { $personIds = $this->container->get('doctrine.orm.entity_manager') ->createQuery('SELECT person.id FROM ChillPersonBundle:Person person') ->getScalarResult(); // get possible values for cfGroup $choices = array_map( static function ($a) { return $a['slug']; }, $this->customFieldChoice->getOptions()['choices'] ); // create faker $faker = \Faker\Factory::create('fr_FR'); // select a set of people and add data foreach ($personIds as $id) { // add info on 1 person on 2 if (rand(0, 1) === 1) { /** @var Person $person */ $person = $manager->getRepository(Person::class)->find($id); $person->setCFData([ 'remarques' => $this->createCustomFieldText() ->serialize($faker->text(rand(150, 250)), $this->customFieldText), 'document-d-identite' => $this->createCustomFieldChoice() ->serialize([$choices[array_rand($choices)]], $this->customFieldChoice), ]); } } } private function loadFields(ObjectManager $manager) { $cfGroup = (new CustomFieldsGroup()) ->setEntity(Person::class) ->setName(['fr' => 'Données']); $manager->persist($cfGroup); // make this group default for Person::class $manager->persist( (new CustomFieldsDefaultGroup()) ->setCustomFieldsGroup($cfGroup) ->setEntity(Person::class) ); // create title field $customField0 = (new CustomField()) ->setActive(true) ->setName(['fr' => 'Données personnalisées']) ->setSlug('personal-data') ->setOrdering(10) ->setType('title') ->setOptions([CustomFieldTitle::TYPE => CustomFieldTitle::TYPE_TITLE]) ->setCustomFieldsGroup($cfGroup); $manager->persist($customField0); // create text field $this->customFieldText = (new CustomField()) ->setActive(true) ->setName(['fr' => 'Remarques']) ->setSlug('remarques') ->setOrdering(20) ->setType('text') ->setOptions(['maxLength' => 5000]) ->setCustomFieldsGroup($cfGroup); $manager->persist($this->customFieldText); // create choice field $this->customFieldChoice = (new CustomField()) ->setActive(true) ->setName(['fr' => "Document d'identité"]) ->setSlug('document-d-identite') ->setOrdering(30) ->setType('choice') ->setCustomFieldsGroup($cfGroup) ->setOptions([ 'multiple' => true, 'other' => false, 'expanded' => true, 'active' => true, 'slug' => 'document-d-identite', 'choices' => [ [ 'name' => ['fr' => "Carte d'identité"], 'active' => true, 'slug' => 'carte-d-identite', ], [ 'name' => ['fr' => 'Passeport'], 'active' => true, 'slug' => 'passeport', ], [ 'name' => ['fr' => 'Titre de séjour'], 'active' => true, 'slug' => 'passeport', ], ], ]); $manager->persist($this->customFieldChoice); } }