From 678386ffd6036da1304b96f5b1a52b7b4fa5127b Mon Sep 17 00:00:00 2001 From: nobohan Date: Wed, 4 Apr 2018 15:02:16 +0200 Subject: [PATCH] fix deprecations: replace many strings by fqcn --- Controller/PersonAddressController.php | 113 +++++++++--------- .../Aggregator/CountryOfBirthAggregator.php | 63 +++++----- Export/Aggregator/NationalityAggregator.php | 59 ++++----- Export/Filter/GenderFilter.php | 27 +++-- Form/AccompanyingPeriodType.php | 15 +-- Form/CreationPersonType.php | 44 +++---- Form/PersonType.php | 6 +- 7 files changed, 168 insertions(+), 159 deletions(-) diff --git a/Controller/PersonAddressController.php b/Controller/PersonAddressController.php index 39e4cd4c7..026577832 100644 --- a/Controller/PersonAddressController.php +++ b/Controller/PersonAddressController.php @@ -3,7 +3,7 @@ /* * Chill is a software for social workers * - * Copyright (C) 2016, Champs Libres Cooperative SCRLFS, + * Copyright (C) 2016, Champs Libres Cooperative SCRLFS, * , * * This program is free software: you can redistribute it and/or modify @@ -23,6 +23,7 @@ namespace Chill\PersonBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Chill\PersonBundle\Entity\Person; use Chill\MainBundle\Form\Type\AddressType; use Chill\MainBundle\Entity\Address; @@ -37,97 +38,97 @@ use Symfony\Component\HttpFoundation\Request; */ class PersonAddressController extends Controller { - + public function listAction($person_id) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_SEE', $person, "You are not allowed to edit this person." ); - + return $this->render('ChillPersonBundle:Address:list.html.twig', array( 'person' => $person )); } - + public function newAction($person_id) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = new Address(); - + $form = $this->createCreateForm($person, $address); - + return $this->render('ChillPersonBundle:Address:new.html.twig', array( 'person' => $person, 'form' => $form->createView() )); } - + public function createAction($person_id, Request $request) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = new Address(); - + $form = $this->createCreateForm($person, $address); $form->handleRequest($request); - + $person->addAddress($address); - + if ($form->isSubmitted()) { $validatePersonErrors = $this->validatePerson($person); - + if (count($validatePersonErrors) !== 0) { foreach ($validatePersonErrors as $error) { $this->addFlash('error', $error->getMessage()); } } elseif ($form->isValid()) { - + $em = $this->getDoctrine()->getManager(); $em->flush(); - + $this->addFlash( 'success', $this->get('translator')->trans('The new address was created successfully') ); - + return $this->redirectToRoute('chill_person_address_list', array( 'person_id' => $person->getId() )); @@ -136,66 +137,66 @@ class PersonAddressController extends Controller ->trans('Error! Address not created!')); } } - + return $this->render('ChillPersonBundle:Address:new.html.twig', array( 'person' => $person, 'form' => $form->createView() )); } - + public function editAction($person_id, $address_id) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = $this->findAddressById($person, $address_id); - + $form = $this->createEditForm($person, $address); - + return $this->render('ChillPersonBundle:Address:edit.html.twig', array( 'person' => $person, 'address' => $address, 'form' => $form->createView() )); } - + public function updateAction($person_id, $address_id, Request $request) { $person = $this->getDoctrine()->getManager() ->getRepository('ChillPersonBundle:Person') ->find($person_id); - + if ($person === null) { throw $this->createNotFoundException("Person with id $person_id not" . " found "); } - + $this->denyAccessUnlessGranted( 'CHILL_PERSON_UPDATE', $person, "You are not allowed to edit this person." ); - + $address = $this->findAddressById($person, $address_id); - + $form = $this->createEditForm($person, $address); $form->handleRequest($request); - - if ($request->getMethod() === 'POST') { + + if ($request->getMethod() === 'POST') { $validatePersonErrors = $this->validatePerson($person); - + if (count($validatePersonErrors) !== 0) { foreach ($validatePersonErrors as $error) { $this->addFlash('error', $error->getMessage()); @@ -203,11 +204,11 @@ class PersonAddressController extends Controller } elseif ($form->isValid()) { $this->getDoctrine()->getManager() ->flush(); - + $this->addFlash('success', $this->get('translator')->trans( "The address has been successfully updated" )); - + return $this->redirectToRoute('chill_person_address_list', array( 'person_id' => $person->getId() )); @@ -216,14 +217,14 @@ class PersonAddressController extends Controller ->trans('Error when updating the period')); } } - + return $this->render('ChillPersonBundle:Address:edit.html.twig', array( 'person' => $person, 'address' => $address, 'form' => $form->createView() )); } - + /** * @param Person $person * @param Address $address @@ -238,16 +239,16 @@ class PersonAddressController extends Controller 'address_id' => $address->getId() )) )); - - $form->add('submit', 'submit', array( + + $form->add('submit', SubmitType::class, array( 'label' => 'Submit' )); - + return $form; } - + /** - * + * * @param Person $person * @param Address $address * @return \Symfony\Component\Form\Form @@ -260,16 +261,16 @@ class PersonAddressController extends Controller 'person_id' => $person->getId() )) )); - - $form->add('submit', 'submit', array( + + $form->add('submit', SubmitType::class, array( 'label' => 'Submit' )); - + return $form; } - + /** - * + * * @param Person $person * @param int $address_id * @return Address @@ -282,15 +283,15 @@ class PersonAddressController extends Controller ->where(Criteria::expr()->eq('id', $address_id)) ->setMaxResults(1); $addresses = $person->getAddresses()->matching($criteria); - + if (count($addresses) === 0) { throw $this->createNotFoundException("Address with id $address_id " . "matching person $person_id not found "); } - + return $addresses->first(); } - + /** * @param Chill\PersonBundle\Entity\Person $person * @return \Symfony\Component\Validator\ConstraintViolationListInterface @@ -301,11 +302,11 @@ class PersonAddressController extends Controller ->validate($person, array('Default')); $errors_addresses_consistent = $this->get('validator') ->validate($person, array('addresses_consistent')); - + foreach($errors_addresses_consistent as $error) { $errors->add($error); } - + return $errors; } } diff --git a/Export/Aggregator/CountryOfBirthAggregator.php b/Export/Aggregator/CountryOfBirthAggregator.php index 84a45fcc8..0818c1c30 100644 --- a/Export/Aggregator/CountryOfBirthAggregator.php +++ b/Export/Aggregator/CountryOfBirthAggregator.php @@ -30,14 +30,15 @@ use Symfony\Component\Security\Core\Role\Role; use Chill\PersonBundle\Security\Authorization\PersonVoter; use Chill\MainBundle\Export\ExportElementValidatedInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; /** - * + * * * @author Julien Fastré */ -class CountryOfBirthAggregator implements AggregatorInterface, +class CountryOfBirthAggregator implements AggregatorInterface, ExportElementValidatedInterface { /** @@ -45,19 +46,19 @@ class CountryOfBirthAggregator implements AggregatorInterface, * @var EntityRepository */ protected $countriesRepository; - + /** * * @var TranslatableStringHelper */ protected $translatableStringHelper; - + /** * * @var TranslatorInterface */ protected $translator; - + public function __construct(EntityRepository $countriesRepository, TranslatableStringHelper $translatableStringHelper, TranslatorInterface $translator) @@ -66,16 +67,16 @@ class CountryOfBirthAggregator implements AggregatorInterface, $this->translatableStringHelper = $translatableStringHelper; $this->translator = $translator; } - + public function applyOn() { return 'person'; } - - + + public function buildForm(FormBuilderInterface $builder) { - $builder->add('group_by_level', 'choice', array( + $builder->add('group_by_level', ChoiceType::class, array( 'choices' => array( 'Group by continents' => 'continent', 'Group by country' => 'country' @@ -84,9 +85,9 @@ class CountryOfBirthAggregator implements AggregatorInterface, 'expanded' => true, 'multiple' => false )); - + } - + public function validateForm($data, ExecutionContextInterface $context) { if ($data['group_by_level'] === null) { @@ -94,7 +95,7 @@ class CountryOfBirthAggregator implements AggregatorInterface, ->addViolation(); } } - + public function alterQuery(QueryBuilder $qb, $data) { // add a clause in select part @@ -109,10 +110,10 @@ class CountryOfBirthAggregator implements AggregatorInterface, . 'WHEN countryOfBirth.countryCode IN(:cob_south_america_codes) THEN \'SA\' ' . 'WHEN countryOfBirth.countryCode IN(:cob_oceania_codes) THEN \'OC\' ' . 'WHEN countryOfBirth.countryCode IN(:cob_antartica_codes) THEN \'AN\' ' - . 'ELSE \'\' ' + . 'ELSE \'\' ' . 'END as country_of_birth_aggregator '; $qb->addSelect($clause); - $params = + $params = array( 'cob_africa_codes' => CountriesInfo::getCountriesCodeByContinent('AF'), 'cob_asia_codes' => CountriesInfo::getCountriesCodeByContinent('AS'), @@ -129,47 +130,47 @@ class CountryOfBirthAggregator implements AggregatorInterface, throw new \LogicException("The group_by_level '".$data['group_by_level'] ." is not known."); } - - + + $qb->leftJoin('person.countryOfBirth', 'countryOfBirth'); - + // add group by $groupBy = $qb->getDQLPart('groupBy'); - + if (!empty($groupBy)) { $qb->addGroupBy('country_of_birth_aggregator'); } else { $qb->groupBy('country_of_birth_aggregator'); } - + } - + public function getTitle() { return "Group people by country of birth"; } - + public function getQueryKeys($data) { return array('country_of_birth_aggregator'); } - + public function addRole() { return NULL; } - + public function getLabels($key, array $values, $data) { if ($data['group_by_level'] === 'country') { $qb = $this->countriesRepository->createQueryBuilder('c'); - + $countries = $qb ->andWhere($qb->expr()->in('c.countryCode', ':countries')) ->setParameter('countries', $values) ->getQuery() ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR); - + // initialize array and add blank key for null values $labels[''] = $this->translator->trans('without data'); $labels['_header'] = $this->translator->trans('Country of birth'); @@ -177,9 +178,9 @@ class CountryOfBirthAggregator implements AggregatorInterface, $labels[$row['c_countryCode']] = $this->translatableStringHelper->localize($row['c_name']); } - + } elseif ($data['group_by_level'] === 'continent') { - + $labels = array( 'EU' => $this->translator->trans('Europe'), 'AS' => $this->translator->trans('Asia'), @@ -192,11 +193,11 @@ class CountryOfBirthAggregator implements AggregatorInterface, '_header' => $this->translator->trans('Continent of birth') ); } - - + + return function($value) use ($labels) { return $labels[$value]; }; - - } + + } } diff --git a/Export/Aggregator/NationalityAggregator.php b/Export/Aggregator/NationalityAggregator.php index 00838961d..e4554a8f0 100644 --- a/Export/Aggregator/NationalityAggregator.php +++ b/Export/Aggregator/NationalityAggregator.php @@ -30,9 +30,10 @@ use Symfony\Component\Security\Core\Role\Role; use Chill\PersonBundle\Security\Authorization\PersonVoter; use Chill\MainBundle\Export\ExportElementValidatedInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; /** - * + * * * @author Julien Fastré */ @@ -44,19 +45,19 @@ class NationalityAggregator implements AggregatorInterface, * @var EntityRepository */ protected $countriesRepository; - + /** * * @var TranslatableStringHelper */ protected $translatableStringHelper; - + /** * * @var TranslatorInterface */ protected $translator; - + public function __construct(EntityRepository $countriesRepository, TranslatableStringHelper $translatableStringHelper, TranslatorInterface $translator) @@ -65,16 +66,16 @@ class NationalityAggregator implements AggregatorInterface, $this->translatableStringHelper = $translatableStringHelper; $this->translator = $translator; } - + public function applyOn() { return 'person'; } - - + + public function buildForm(FormBuilderInterface $builder) { - $builder->add('group_by_level', 'choice', array( + $builder->add('group_by_level', ChoiceType::class, array( 'choices' => array( 'Group by continents' => 'continent', 'Group by country' => 'country' @@ -83,7 +84,7 @@ class NationalityAggregator implements AggregatorInterface, 'expanded' => true, 'multiple' => false )); - + } public function validateForm($data, ExecutionContextInterface $context) @@ -93,7 +94,7 @@ class NationalityAggregator implements AggregatorInterface, ->addViolation(); } } - + public function alterQuery(QueryBuilder $qb, $data) { // add a clause in select part @@ -108,10 +109,10 @@ class NationalityAggregator implements AggregatorInterface, . 'WHEN nationality.countryCode IN(:south_america_codes) THEN \'SA\' ' . 'WHEN nationality.countryCode IN(:oceania_codes) THEN \'OC\' ' . 'WHEN nationality.countryCode IN(:antartica_codes) THEN \'AN\' ' - . 'ELSE \'\' ' + . 'ELSE \'\' ' . 'END as nationality_aggregator '; $qb->addSelect($clause); - $params = + $params = array( 'africa_codes' => CountriesInfo::getCountriesCodeByContinent('AF'), 'asia_codes' => CountriesInfo::getCountriesCodeByContinent('AS'), @@ -128,47 +129,47 @@ class NationalityAggregator implements AggregatorInterface, throw new \LogicException("The group_by_level '".$data['group_by_level'] ." is not known."); } - - + + $qb->leftJoin('person.nationality', 'nationality'); - + // add group by $groupBy = $qb->getDQLPart('groupBy'); - + if (!empty($groupBy)) { $qb->addGroupBy('nationality_aggregator'); } else { $qb->groupBy('nationality_aggregator'); } - + } - + public function getTitle() { return "Group people by nationality"; } - + public function getQueryKeys($data) { return array('nationality_aggregator'); } - + public function addRole() { return NULL; } - + public function getLabels($key, array $values, $data) { if ($data['group_by_level'] === 'country') { $qb = $this->countriesRepository->createQueryBuilder('c'); - + $countries = $qb ->andWhere($qb->expr()->in('c.countryCode', ':countries')) ->setParameter('countries', $values) ->getQuery() ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR); - + // initialize array and add blank key for null values $labels[''] = $this->translator->trans('without data'); $labels['_header'] = $this->translator->trans('Nationality'); @@ -176,9 +177,9 @@ class NationalityAggregator implements AggregatorInterface, $labels[$row['c_countryCode']] = $this->translatableStringHelper->localize($row['c_name']); } - + } elseif ($data['group_by_level'] === 'continent') { - + $labels = array( 'EU' => $this->translator->trans('Europe'), 'AS' => $this->translator->trans('Asia'), @@ -191,11 +192,11 @@ class NationalityAggregator implements AggregatorInterface, '_header' => $this->translator->trans('Continent') ); } - - + + return function($value) use ($labels) { return $labels[$value]; }; - - } + + } } diff --git a/Export/Filter/GenderFilter.php b/Export/Filter/GenderFilter.php index 30af1f015..677f807a5 100644 --- a/Export/Filter/GenderFilter.php +++ b/Export/Filter/GenderFilter.php @@ -27,27 +27,28 @@ use Doctrine\ORM\Query\Expr; use Symfony\Component\Security\Core\Role\Role; use Chill\MainBundle\Export\ExportElementValidatedInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; /** - * + * * * @author Julien Fastré */ class GenderFilter implements FilterInterface, ExportElementValidatedInterface { - + public function applyOn() { return 'person'; } - + /** - * + * */ public function buildForm(FormBuilderInterface $builder) { - $builder->add('accepted_genders', 'choice', array( + $builder->add('accepted_genders', ChoiceType::class, array( 'choices' => array( Person::FEMALE_GENDER => 'Woman', Person::MALE_GENDER => 'Man' @@ -56,7 +57,7 @@ class GenderFilter implements FilterInterface, 'expanded' => false )); } - + public function validateForm($data, ExecutionContextInterface $context) { if (count($data['accepted_genders']) === 0) { @@ -64,38 +65,38 @@ class GenderFilter implements FilterInterface, ->addViolation(); } } - + public function alterQuery(QueryBuilder $qb, $data) { $where = $qb->getDQLPart('where'); $clause = $qb->expr()->in('person.gender', ':person_gender'); - + if ($where instanceof Expr\Andx) { $where->add($clause); } else { $where = $qb->expr()->andX($clause); } - + $qb->add('where', $where); $qb->setParameter('person_gender', $data['accepted_genders']); } - + /** * A title which will be used in the label for the form - * + * * @return string */ public function getTitle() { return 'Filter by person gender'; } - + public function addRole() { return NULL; } - + public function describeAction($data, $format = 'string') { switch($data['accepted_genders']) { diff --git a/Form/AccompanyingPeriodType.php b/Form/AccompanyingPeriodType.php index f1ba4a95d..6e1fe4ac8 100644 --- a/Form/AccompanyingPeriodType.php +++ b/Form/AccompanyingPeriodType.php @@ -9,6 +9,7 @@ use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; +use Symfony\Component\Form\Extension\Core\Type\TextareaType; class AccompanyingPeriodType extends AbstractType { @@ -22,13 +23,13 @@ class AccompanyingPeriodType extends AbstractType if ($options['period_action'] !== 'close') { $builder ->add('openingDate', 'date', array( - "required" => true, + "required" => true, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy' )); } - - // the closingDate should be seen only if period_action = close + + // the closingDate should be seen only if period_action = close // or period_action = update AND accopanying period is already closed $builder->addEventListener( FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($options) { @@ -49,13 +50,13 @@ class AccompanyingPeriodType extends AbstractType $form->add('closingMotive', 'closing_motive'); } }); - - $builder->add('remark', 'textarea', array( + + $builder->add('remark', TextareaType::class, array( 'required' => false )) ; } - + /** * @param OptionsResolverInterface $resolver */ @@ -71,7 +72,7 @@ class AccompanyingPeriodType extends AbstractType ->addAllowedValues(array('period_action' => array( 'update', 'open', 'close', 'create'))); } - + public function buildView(FormView $view, FormInterface $form, array $options) { $view->vars['action'] = $options['period_action']; diff --git a/Form/CreationPersonType.php b/Form/CreationPersonType.php index 5a305880c..0f0e86d52 100644 --- a/Form/CreationPersonType.php +++ b/Form/CreationPersonType.php @@ -24,29 +24,31 @@ namespace Chill\PersonBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use Chill\PersonBundle\Form\Type\GenderType; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; + +use Chill\PersonBundle\Form\Type\GenderType; use Chill\MainBundle\Form\Type\DataTransformer\CenterTransformer; class CreationPersonType extends AbstractType { - + const NAME = 'chill_personbundle_person_creation'; - + const FORM_NOT_REVIEWED = 'not_reviewed'; const FORM_REVIEWED = 'reviewed' ; const FORM_BEING_REVIEWED = 'being_reviewed'; - + /** * * @var CenterTransformer */ private $centerTransformer; - + public function __construct(CenterTransformer $centerTransformer) { $this->centerTransformer = $centerTransformer; } - + /** * @param FormBuilderInterface $builder * @param array $options @@ -54,24 +56,24 @@ class CreationPersonType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options) { if ($options['form_status'] === self::FORM_BEING_REVIEWED) { - + $dateToStringTransformer = new DateTimeToStringTransformer( null, null, 'd-m-Y', false); - - $builder->add('firstName', 'hidden') - ->add('lastName', 'hidden') - ->add('birthdate', 'hidden', array( + + $builder->add('firstName', HiddenType::class) + ->add('lastName', HiddenType::class) + ->add('birthdate', HiddenType::class, array( 'property_path' => 'birthdate' )) - ->add('gender', 'hidden') - ->add('creation_date', 'hidden', array( + ->add('gender', HiddenType::class) + ->add('creation_date', HiddenType::class, array( 'mapped' => false )) - ->add('form_status', 'hidden', array( + ->add('form_status', HiddenType::class, array( 'mapped' => false, 'data' => $options['form_status'] )) - ->add('center', 'hidden') + ->add('center', HiddenType::class) ; $builder->get('birthdate') ->addModelTransformer($dateToStringTransformer); @@ -83,18 +85,18 @@ class CreationPersonType extends AbstractType $builder ->add('firstName') ->add('lastName') - ->add('birthdate', 'date', array('required' => false, + ->add('birthdate', 'date', array('required' => false, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy')) ->add('gender', new GenderType(), array( 'required' => true, 'empty_value' => null )) ->add('creation_date', 'date', array( - 'required' => true, - 'widget' => 'single_text', + 'required' => true, + 'widget' => 'single_text', 'format' => 'dd-MM-yyyy', 'mapped' => false, 'data' => new \DateTime())) - ->add('form_status', 'hidden', array( + ->add('form_status', HiddenType::class, array( 'data' => $options['form_status'], 'mapped' => false )) @@ -102,7 +104,7 @@ class CreationPersonType extends AbstractType ; } } - + /** * @param OptionsResolver $resolver */ @@ -111,7 +113,7 @@ class CreationPersonType extends AbstractType $resolver->setDefaults(array( 'data_class' => 'Chill\PersonBundle\Entity\Person' )); - + $resolver->setRequired('form_status') ->setAllowedValues('form_status', array( self::FORM_BEING_REVIEWED, diff --git a/Form/PersonType.php b/Form/PersonType.php index dd59c24b3..08525fa43 100644 --- a/Form/PersonType.php +++ b/Form/PersonType.php @@ -25,10 +25,12 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type\TextareaType; +use Symfony\Component\Form\Extension\Core\Type\TextType; use Chill\PersonBundle\Form\Type\GenderType; use Chill\MainBundle\Form\Type\Select2CountryType; use Chill\MainBundle\Form\Type\Select2LanguageType; +use Chill\CustomFieldsBundle\Form\Type\CustomFieldType; class PersonType extends AbstractType { @@ -68,7 +70,7 @@ class PersonType extends AbstractType ; if ($this->config['place_of_birth'] === 'visible') { - $builder->add('placeOfBirth', 'text', array('required' => false)); + $builder->add('placeOfBirth', TextType::class, array('required' => false)); } if ($this->config['phonenumber'] === 'visible') { @@ -106,7 +108,7 @@ class PersonType extends AbstractType if($options['cFGroup']) { $builder - ->add('cFData', 'custom_field', + ->add('cFData', CustomFieldType::class, array('attr' => array('class' => 'cf-fields'), 'group' => $options['cFGroup'])) ; }