<?php
namespace App\Form;
use App\Entity\Offers;
use App\Form\ImageType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Vich\UploaderBundle\Form\Type\VichFileType;
class OffersType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('title', TextType::class,['label' => 'Titre de l\'offre de Job'], ['attr'=>['class'=>''], 'required' => true ])
->add('content', TextareaType::class,[
'label' => 'Description de l\'offre de Job',
'attr'=>[
'rows'=> 10,
'cols'=>50,
'placeholder'=>'Décrivez votre offre de Job',
'class'=>'shadow'
],
'required' => false
])
->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 ])
->add('code_postal', HiddenType::class)
->add('city', HiddenType::class)
->add('category', ChoiceType::class, [
'choices' => [
'Ménage' => 'Ménage',
'Bricolage' => 'Bricolage',
'Plomberie' => 'Plomberie',
'Électricité' => 'Électricité',
'Peinture' => 'Peinture',
'Maçonnerie' => 'Maçonnerie',
'Jardinage' => 'Jardinage',
'Garde d\'enfants' => 'Garde d\'enfants',
'Nettoyage' => 'Nettoyage',
'Coiffure' => 'Coiffure',
'Beauté' => 'Beauté',
'Cours particuliers' => 'Cours particuliers',
'Informatique' => 'Informatique',
'Livraison' => 'Livraison',
'Autre' => 'Autre',
],
'label' => 'Catégorie de Job',
'placeholder' => 'Sélectionner une catégorie', // Optional: Adds a default empty choice
'expanded' => false, // false = dropdown, true = radio buttons
'multiple' => false, // false = single select, true = multi-select
'attr' => ['class' => 'custom-select-class'], // Custom CSS class
])
->add('latitude', HiddenType::class,['label' => 'Titre de l\'offre de Job'], ['attr'=>['class'=>''], 'required' => false ])
->add('longitude', HiddenType::class,['label' => 'Titre de l\'offre de Job'], ['attr'=>['class'=>''], 'required' => false ])
->add('images', CollectionType::class,[
'label' => 'Ajouter des photos',
'entry_type' => ImagesOfferType::class, // Form for each file
'allow_add' => true,
'by_reference' => false,
//'mapped' => false
])
->add('submit', SubmitType::class,[
'label' => 'Déposer votre offre',
'attr'=>['class'=>'m-3','d-inline-block w-25' ],
'row_attr' => ['class' => 'd-inline-block w-25'] // This will remove the form-group div
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Offers::class
]);
}
}