<?php
namespace Bidcoz\Bundle\FrontendBundle\Form\Type;
use Bidcoz\Bundle\CoreBundle\Entity\Image;
use Bidcoz\Bundle\CoreBundle\Entity\Sponsorship\Sponsorship;
use Bidcoz\Bundle\CoreBundle\Entity\Sponsorship\SponsorshipLevel;
use Doctrine\ORM\EntityRepository;
use RS\DiExtraBundle\Annotation as DI;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* @DI\FormType
*/
class SponsorshipType extends AbstractType
{
private $transformerFactory;
/**
* @DI\InjectParams({
* "transformerFactory" = @DI\Inject("bidcoz.form.entity_transformer_factory"),
* })
*/
public function __construct($transformerFactory)
{
$this->transformerFactory = $transformerFactory;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$campaign = $options['campaign'];
$builder
->add('url', UrlType::class)
->add('level', EntityType::class, [
'class' => SponsorshipLevel::class,
'choice_label' => 'label',
'query_builder' => function (EntityRepository $repo) use ($campaign) {
$qb = $repo->findAllActiveForCampaignQueryBuilder($campaign);
$qb->orderBy('sl.price', 'DESC');
return $qb;
},
])
->add('image', HiddenType::class)
;
// Set the transformers
$imageTransformer = $this->transformerFactory->create(Image::class);
$builder->get('image')->addViewTransformer($imageTransformer);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Sponsorship::class,
'campaign' => null,
]);
}
public function getBlockPrefix()
{
return 'sponsorship';
}
}