Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. class ContestType extends AbstractType {
  2. public function buildForm(FormBuilderInterface $builder, array $options)
  3. {
  4. $builder
  5. ->add('tournament', EntityType::class, [
  6. 'class' => Tournament::class,
  7. 'choice_label' => 'name',
  8. 'required' => false,
  9. ])
  10. ->add('player', EntityType::class, [
  11. 'class' => Player::class,
  12. 'choice_label' => 'pseudo',
  13. 'required' => false,
  14. ])
  15. ->add('loser', EntityType::class, [
  16. 'class' => Player::class,
  17. 'choice_label' => 'pseudo',
  18. 'required' => false,
  19. ])
  20. ->add('game', EntityType::class, [
  21. 'class' => Game::class,
  22. 'choice_label' => 'name',
  23. ]);
  24.  
  25. $builder->get('tournament')->addEventListener(
  26. FormEvents::POST_SUBMIT,
  27. function (FormEvent $event) {
  28. $form = $event->getForm();
  29.  
  30. $this->addPlayerField($form->getParent(), $form->getData());
  31. }
  32. );
  33.  
  34. }
  35.  
  36. private function addPlayerField(FormInterface $form, ?Tournament $tournament)
  37. {
  38. $builder = $form->getConfig()->getFormFactory()->createNamedBuilder(
  39. 'player',
  40. EntityType::class,
  41. null,
  42. [
  43. 'class' => Player::class,
  44. 'choices' => $tournament->getPlayers(),
  45. 'auto_initialize' => false,
  46. 'choice_label' => 'pseudo',
  47. 'required' => false,
  48.  
  49. ] );
  50.  
  51.  
  52. $builder->addEventListener(
  53. FormEvents::POST_SUBMIT,
  54. function (FormEvent $event) {
  55. $form = $event->getForm();
  56.  
  57. $this->addLoserField($form->getParent(), $form->getData());
  58.  
  59. }
  60. );
  61.  
  62. $form->add($builder->getForm());
  63. }
  64.  
  65.  
  66. private function addLoserField(FormInterface $form, ?Player $player)
  67. {
  68. $form->add( 'loser', EntityType::class, [
  69. 'class' => Player::class,
  70. 'choice_label' => 'pseudo',
  71. 'choices' => $player->getTeam()->getPlayers(),
  72. 'required' => false,
  73. ]);
  74. }
  75.  
  76.  
  77. public function configureOptions(OptionsResolver $resolver)
  78. {
  79. $resolver->setDefaults([
  80. 'data_class' => Contest::class,
  81. ]);
  82. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement