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]);
     });
 }
Esempio n. 2
0
 /**
  * @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;
 }
Esempio n. 3
0
 /**
  * @return array
  */
 public function getWidgetsConfig()
 {
     return $this->widgetTypeManager->getWidgetsConfig();
 }