<?php
/**
* @author Jérôme Mulsant <jerome@rue-de-la-vieille.fr>
*/
namespace App\Form;
use App\Entity\Categorie;
use App\Entity\Departement;
use Doctrine\ORM\EntityRepository;
use App\Model\AnnuaireSearch;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class AnnuaireType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
if ($options['prestataire']) {
$builder->add('keywords', TextType::class, array(
'label' => 'Recherche par mot-clé ou code postal',
'required' => false
));
}
$builder->add('cat', EntityType::class, array(
'class' => Categorie::class,
'label' => 'Catégorie',
'query_builder' => function (EntityRepository $repo) {
return $repo->createQueryBuilder('c')
->where('c.parent IS NOT NULL')
->leftJoin('c.group', 'cg')
->orderBy('cg.ordre')
->addOrderBy('c.ordre')
->addOrderBy('c.nom');
// ->leftJoin('c.page', 'p')
// ->leftJoin('p.parent', 'pp')
// ->orderBy('pp.order')
// ->addOrderBy('p.order');
},
'placeholder' => '– Sélectionnez –',
'group_by' => 'parent.nom',
'required' => false
));
$builder->add('dept', EntityType::class, array(
'class' => Departement::class,
'label' => 'Lieu',
'placeholder' => '– Sélectionnez –',
'required' => false
));
// $builder->add('cp', 'text', array(
// 'label' => 'Code postal',
// 'placeholder' => 'Ex. 75001',
// 'required' => false,
// 'attr' => array('size' => 5)
// ));
$builder->add('submit', SubmitType::class, array('label' => 'Rechercher'));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => AnnuaireSearch::class,
'csrf_protection' => false,
'prestataire' => true
));
}
/**
* Returns the name of this type.
*
* @return string The name of this type
*/
public function getName()
{
return '';
}
}