src/Form/OffersType.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Offers;
  4. use App\Form\ImageType;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\OptionsResolver\OptionsResolver;
  8. use Symfony\Component\Form\Extension\Core\Type\FileType;
  9. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  10. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  13. use Symfony\Component\Form\Extension\Core\Type\DateType;
  14. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  15. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  16. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  17. use Vich\UploaderBundle\Form\Type\VichFileType;
  18. class OffersType extends AbstractType
  19. {
  20.     public function buildForm(FormBuilderInterface $builder, array $options): void
  21.     {
  22.         $builder
  23.             ->add('title'TextType::class,['label' => 'Titre de l\'offre de Job'], ['attr'=>['class'=>''], 'required'   => true ])
  24.             ->add('content'TextareaType::class,[
  25.                 'label' => 'Description de l\'offre de Job',
  26.                 'attr'=>[
  27.                     'rows'=> 10,
  28.                     'cols'=>50,
  29.                     'placeholder'=>'Décrivez votre offre de Job',
  30.                     'class'=>'shadow'
  31.                 ],
  32.                 'required'   => false 
  33.                 ])
  34.         
  35.             ->add('address'TextType::class,['label' => 'Adresse de l\'offre de Job ( sélectionner votre adresse dans la liste déroulante )'], ['attr'=>['class'=>'''id' => 'account_form_adresse'], 'required'   => false ])
  36.             ->add('code_postal'HiddenType::class)
  37.             ->add('city'HiddenType::class)
  38.             ->add('category'ChoiceType::class, [
  39.                 'choices'  => [
  40.                     'Ménage' => 'Ménage',
  41.                     'Bricolage'   => 'Bricolage',
  42.                     'Plomberie' => 'Plomberie',
  43.                     'Électricité' => 'Électricité',
  44.                     'Peinture' => 'Peinture',
  45.                     'Maçonnerie' => 'Maçonnerie',
  46.                     'Jardinage'    => 'Jardinage',
  47.                     'Garde d\'enfants'      => 'Garde d\'enfants',
  48.                     'Nettoyage'           => 'Nettoyage',
  49.                     'Coiffure'     => 'Coiffure',
  50.                     'Beauté' => 'Beauté',
  51.                     'Cours particuliers' => 'Cours particuliers',
  52.                     'Informatique' => 'Informatique',
  53.                     'Livraison' => 'Livraison',
  54.                     'Autre' => 'Autre',
  55.                 ],
  56.                     'label' => 'Catégorie de Job',
  57.                     'placeholder' => 'Sélectionner une catégorie'// Optional: Adds a default empty choice
  58.                     'expanded' => false// false = dropdown, true = radio buttons
  59.                     'multiple' => false// false = single select, true = multi-select
  60.                     'attr' => ['class' => 'custom-select-class'], // Custom CSS class
  61.                 ])
  62.             ->add('latitude'HiddenType::class,['label' => 'Titre de l\'offre de Job'], ['attr'=>['class'=>''], 'required'   => false ])
  63.             ->add('longitude'HiddenType::class,['label' => 'Titre de l\'offre de Job'], ['attr'=>['class'=>''], 'required'   => false ])
  64.             ->add('images'CollectionType::class,[
  65.                     'label'     => 'Ajouter des photos',
  66.                     'entry_type' => ImagesOfferType::class,  // Form for each file
  67.                     'allow_add' => true,
  68.                     'by_reference' => false,
  69.                     //'mapped' => false
  70.                 ])
  71.             ->add('submit'SubmitType::class,[
  72.                     'label' => 'Déposer votre offre',
  73.                     'attr'=>['class'=>'m-3','d-inline-block w-25' ],
  74.                     'row_attr' => ['class' => 'd-inline-block w-25'// This will remove the form-group div
  75.                 ])  
  76.             ;
  77.     }
  78.     public function configureOptions(OptionsResolver $resolver): void
  79.     {
  80.         $resolver->setDefaults([
  81.             'data_class' => Offers::class
  82.         ]);
  83.     }
  84. }