Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ContestType extends AbstractType {
- public function buildForm(FormBuilderInterface $builder, array $options)
- {
- $builder
- ->add('tournament', EntityType::class, [
- 'class' => Tournament::class,
- 'choice_label' => 'name',
- 'required' => false,
- ])
- ->add('player', EntityType::class, [
- 'class' => Player::class,
- 'choice_label' => 'pseudo',
- 'required' => false,
- ])
- ->add('loser', EntityType::class, [
- 'class' => Player::class,
- 'choice_label' => 'pseudo',
- 'required' => false,
- ])
- ->add('game', EntityType::class, [
- 'class' => Game::class,
- 'choice_label' => 'name',
- ]);
- $builder->get('tournament')->addEventListener(
- FormEvents::POST_SUBMIT,
- function (FormEvent $event) {
- $form = $event->getForm();
- $this->addPlayerField($form->getParent(), $form->getData());
- }
- );
- }
- private function addPlayerField(FormInterface $form, ?Tournament $tournament)
- {
- $builder = $form->getConfig()->getFormFactory()->createNamedBuilder(
- 'player',
- EntityType::class,
- null,
- [
- 'class' => Player::class,
- 'choices' => $tournament->getPlayers(),
- 'auto_initialize' => false,
- 'choice_label' => 'pseudo',
- 'required' => false,
- ] );
- $builder->addEventListener(
- FormEvents::POST_SUBMIT,
- function (FormEvent $event) {
- $form = $event->getForm();
- $this->addLoserField($form->getParent(), $form->getData());
- }
- );
- $form->add($builder->getForm());
- }
- private function addLoserField(FormInterface $form, ?Player $player)
- {
- $form->add( 'loser', EntityType::class, [
- 'class' => Player::class,
- 'choice_label' => 'pseudo',
- 'choices' => $player->getTeam()->getPlayers(),
- 'required' => false,
- ]);
- }
- public function configureOptions(OptionsResolver $resolver)
- {
- $resolver->setDefaults([
- 'data_class' => Contest::class,
- ]);
- }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement