public function buildForm(FormBuilderInterface $builder, array $options) { $token = $this->tokenStorage->getToken(); if ($token === null) { throw new \LogicException('Unable to get token from security storage for portfolio widget form!'); } $user = $token->getUser(); if (!$user) { throw new \LogicException('Unable to get connected user for portfolio widget form!'); } $builder->add('portfolio_id', 'entity', ['class' => 'IcapPortfolioBundle:Portfolio', 'query_builder' => function (EntityRepository $entityRepository) use($user) { return $entityRepository->createQueryBuilder('p')->where('p.user = :user')->setParameter('user', $user); }, 'property_path' => 'portfolio'])->add('widget_id', 'entity', ['class' => 'IcapPortfolioBundle:Widget\\AbstractWidget', 'query_builder' => function (EntityRepository $entityRepository) use($user) { return $entityRepository->createQueryBuilder('w')->where('w.user = :user')->setParameter('user', $user); }, 'property_path' => 'widget'])->add('col', 'integer')->add('row', 'integer')->add('sizeX', 'integer')->add('sizeY', 'integer'); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($user) { $form = $event->getForm(); $choices = []; $choiceTypes = $this->widgetTypeManager->getWidgetsTypes(); foreach ($choiceTypes as $choiceType) { $choices[$choiceType['name']] = $choiceType['name']; } $form->add('widget_type', 'choice', ['choices' => $choices]); }); }
/** * @param Portfolio $portfolio * @param string $type * * @return \Icap\PortfolioBundle\Entity\PortfolioWidget */ public function createPortfolioWidget(Portfolio $portfolio, $type) { if (!$this->widgetTypeManager->isWidgetTypeExists($type)) { throw new \InvalidArgumentException(); } $portfolioWidget = new PortfolioWidget(); $portfolioWidget->setPortfolio($portfolio)->setWidgetType($type); return $portfolioWidget; }
/** * @return array */ public function getWidgetsConfig() { return $this->widgetTypeManager->getWidgetsConfig(); }