diff --git a/src/Bundle/ChillMainBundle/Form/Type/PickCivilityType.php b/src/Bundle/ChillMainBundle/Form/Type/PickCivilityType.php new file mode 100644 index 000000000..5e357917e --- /dev/null +++ b/src/Bundle/ChillMainBundle/Form/Type/PickCivilityType.php @@ -0,0 +1,70 @@ +translatableStringHelper = $translatableStringHelper; + } + + public function buildForm(FormBuilderInterface $builder, array $options) + { + /** @var QueryBuilder $qb */ + $qb = $options['query_builder']; + + $qb->where($qb->expr()->eq('at.active', ':active')) + ->orderBy('c.order'); + $qb->setParameter('active', true); + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver + ->setDefault('label', 'Civility') + ->setDefault('choice_label', function (Civility $civility): string { + return $this->translatableStringHelper->localize($civility->getName()); + } + ) + ->setDefault('query_builder', function (EntityRepository $er): QueryBuilder + { + return $er->createQueryBuilder('c'); + }, + ) + ->setDefault('placeholder', 'choose civility') + ->setDefault('class', Civility::class); + + } + + public function getBlockPrefix() + { + return 'civility_type'; + } + + public function getParent() + { + return Entity::class; + } +} \ No newline at end of file diff --git a/src/Bundle/ChillPersonBundle/Form/PersonType.php b/src/Bundle/ChillPersonBundle/Form/PersonType.php index bafe21277..8634c253c 100644 --- a/src/Bundle/ChillPersonBundle/Form/PersonType.php +++ b/src/Bundle/ChillPersonBundle/Form/PersonType.php @@ -17,6 +17,7 @@ use Chill\MainBundle\Form\Type\ChillCollectionType; use Chill\MainBundle\Form\Type\ChillDateType; use Chill\MainBundle\Form\Type\ChillTextareaType; use Chill\MainBundle\Form\Type\CommentType; +use Chill\MainBundle\Form\Type\PickCivilityType; use Chill\MainBundle\Form\Type\Select2CountryType; use Chill\MainBundle\Form\Type\Select2LanguageType; use Chill\MainBundle\Templating\TranslatableStringHelper; @@ -190,19 +191,10 @@ class PersonType extends AbstractType if ('visible' === $this->config['civility']) { $builder - ->add('civility', EntityType::class, [ - 'label' => 'Civility', - 'class' => Civility::class, - 'choice_label' => function (Civility $civility): string { - return $this->translatableStringHelper->localize($civility->getName()); - }, - 'query_builder' => static function (EntityRepository $er): QueryBuilder { - return $er->createQueryBuilder('c') - ->where('c.active = true') - ->orderBy('c.order'); - }, - 'placeholder' => 'choose civility', + ->add('civility', PickCivilityType::class, [ 'required' => false, + 'label' => 'Civility', + 'placeholder' => 'choose civility' ]); }