<?php
namespace App\Form;
use App\Entity\Advertisement;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
class SearchAdvertisementForm extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('sale', ChoiceType::class, [
'choices' => [
'label.rent' => 0,
'label.buy' => 1
],
'expanded' => false,
'multiple' => false,
'attr' => [
'class' => 'select-field',
'autocomplete' => 'off'
],
'empty_data' => null,
'placeholder' => 'Louer/Acheter',
'required' => false
])
->add('type', ChoiceType::class, [
'choices' => array_flip(Advertisement::getTypeLabels()),
'expanded' => false,
'multiple' => false,
'attr' => [
'autocomplete' => 'off'
],
'empty_data' => null,
'placeholder' => 'Type de bien',
'required' => false
])
->add('roomNumber', IntegerType::class, [
'constraints' => new Assert\GreaterThanOrEqual(['value' => 0]),
'attr' => ['min' => 0,'autocomplete' => 'off'],
'required' => false
])
->add('place', TextType::class, [
'constraints' => new Assert\NotBlank(),
'attr' => [
'autocomplete' => 'off'
]
])
->add('city', HiddenType::class)
->add('postalCode', HiddenType::class)
->add('department', HiddenType::class)
->add('region', HiddenType::class)
->add('price', IntegerType::class, [
'constraints' => new Assert\GreaterThanOrEqual(['value' => 0]),
'attr' => ['min' => 0,'autocomplete' => 'off'],
'required' => false
])
->add('availableDate', DateType::class, [
'widget' => 'single_text',
'html5' => false,
'format' => 'dd/MM/yyyy',
'attr' => ['class' => '','autocomplete' => 'off'],
'required' => false
])
->add('surface', IntegerType::class, [
'constraints' => new Assert\GreaterThanOrEqual(['value' => 0]),
'attr' => ['min' => 0],
'required' => false
])
->add('floor', IntegerType::class, [
'constraints' => new Assert\GreaterThanOrEqual(['value' => 0]),
'attr' => ['min' => 0],
'required' => false
])
->add('bedroomNumber', IntegerType::class, [
'constraints' => new Assert\GreaterThanOrEqual(['value' => 0]),
'attr' => ['min' => 0],
'required' => false
])
->add('bathroomNumber', IntegerType::class, [
'constraints' => new Assert\GreaterThanOrEqual(['value' => 0]),
'attr' => ['min' => 0],
'required' => false
])
->add('new', HiddenType::class)
->add('advantages', EntityType::class, [
'class' => 'App\Entity\Advantage',
'choice_label' => 'name',
'expanded' => true,
'multiple' => true,
'label' => false
])
;
}
public function getBlockPrefix()
{
return '';
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'csrf_protection' => false,
));
}
}