/** * @return BannerCollection */ protected function getCollection() { if (null === $this->collection) { $this->collection = $this->manager->getBanners(); } return $this->collection; }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $callback = function ($object, ExecutionContextInterface $context) use($builder) { $position = $this->manager->getPositionByName($object); /** @var BannerPosition $data */ $data = $builder->getData(); if ($data->getId() && $position && $data->getId() == $position->getId()) { return; } if ($position) { $context->buildViolation('A position with this name already exists')->addViolation(); } }; $builder->add('name', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType', ['label' => 'Name', 'attr' => ['placeholder' => 'Name'], 'constraints' => [new NotBlank(), new Callback(['callback' => $callback])]])->add('description', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType', ['label' => 'Position description', 'attr' => ['placeholder' => 'Position description'], 'constraints' => [new NotBlank()]])->add('banner', 'Symfony\\Bridge\\Doctrine\\Form\\Type\\EntityType', ['class' => 'Wucdbm\\Bundle\\BannerBundle\\Entity\\Banner', 'choice_label' => 'name', 'placeholder' => 'Banner', 'attr' => ['class' => 'select2'], 'required' => false])->add('isActive', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CheckboxType', ['label' => 'Active', 'required' => false]); }