src/Form/AnnuaireType.php line 35

Open in your IDE?
  1. <?php
  2. /**
  3. * @author Jérôme Mulsant <jerome@rue-de-la-vieille.fr>
  4. */
  5. namespace App\Form;
  6. use App\Entity\Categorie;
  7. use App\Entity\Departement;
  8. use Doctrine\ORM\EntityRepository;
  9. use App\Model\AnnuaireSearch;
  10. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  11. use Symfony\Component\Form\AbstractType;
  12. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\FormBuilderInterface;
  15. use Symfony\Component\OptionsResolver\OptionsResolver;
  16. use Symfony\Component\OptionsResolver\OptionsResolverInterface;
  17. class AnnuaireType extends AbstractType
  18. {
  19. public function buildForm(FormBuilderInterface $builder, array $options)
  20. {
  21. if ($options['prestataire']) {
  22. $builder->add('keywords', TextType::class, array(
  23. 'label' => 'Recherche par mot-clé ou code postal',
  24. 'required' => false
  25. ));
  26. }
  27. $builder->add('cat', EntityType::class, array(
  28. 'class' => Categorie::class,
  29. 'label' => 'Catégorie',
  30. 'query_builder' => function (EntityRepository $repo) {
  31. return $repo->createQueryBuilder('c')
  32. ->where('c.parent IS NOT NULL')
  33. ->leftJoin('c.group', 'cg')
  34. ->orderBy('cg.ordre')
  35. ->addOrderBy('c.ordre')
  36. ->addOrderBy('c.nom');
  37. // ->leftJoin('c.page', 'p')
  38. // ->leftJoin('p.parent', 'pp')
  39. // ->orderBy('pp.order')
  40. // ->addOrderBy('p.order');
  41. },
  42. 'placeholder' => '– Sélectionnez –',
  43. 'group_by' => 'parent.nom',
  44. 'required' => false
  45. ));
  46. $builder->add('dept', EntityType::class, array(
  47. 'class' => Departement::class,
  48. 'label' => 'Lieu',
  49. 'placeholder' => '– Sélectionnez –',
  50. 'required' => false
  51. ));
  52. // $builder->add('cp', 'text', array(
  53. // 'label' => 'Code postal',
  54. // 'placeholder' => 'Ex. 75001',
  55. // 'required' => false,
  56. // 'attr' => array('size' => 5)
  57. // ));
  58. $builder->add('submit', SubmitType::class, array('label' => 'Rechercher'));
  59. }
  60. public function configureOptions(OptionsResolver $resolver)
  61. {
  62. $resolver->setDefaults(array(
  63. 'data_class' => AnnuaireSearch::class,
  64. 'csrf_protection' => false,
  65. 'prestataire' => true
  66. ));
  67. }
  68. /**
  69. * Returns the name of this type.
  70. *
  71. * @return string The name of this type
  72. */
  73. public function getName()
  74. {
  75. return '';
  76. }
  77. }