<?php
namespace App\Form\Projets;
use App\DataTransformer\Projets\IdToProjetTransformer;
use App\Entity\Clients\Client;
use App\Entity\Projets\Projet;
use App\Entity\Projets\Tache;
use App\Entity\Utilisateur\Contact;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class TacheType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('rapporteurInterne')
//->add('rapporteurExterne')
->add('responsableInterne')
//->add('responsableExterne')
->add('priorite')
->add('etat')
->add('reference')
->add('description')
//->add('projet')
->add('projet', EntityType::class, [
'multiple' => false, // Wether or not multiple values are allowed (default to false)
'class' => Projet::class,
'attr' => [
'class' => 'select2-hidden-accessible',
],
])
->add('pourcentage')
->add('nbHeuresAlloues')
//->add('nbHeuresRealisees')
//->add('differenceHeure')
->add('libelle')
//->add('dateMail', DateTimeType::class, array( 'pickerOptions' =>array('autoclose' => true,)))
->add('date', DateTimeType::class)
->add('dateDebutPrevue', DateTimeType::class)
//->add('dateDebutRecalee', DateTimeType::class, array( 'pickerOptions' =>array('format' => 'dd/mm/yyyy hh:ii','autoclose' => true,)))
->add('dateDebutReelle', DateTimeType::class)
->add('dateFinPrevue', DateTimeType::class)
//->add('dateFinRecalee', DateTimeType::class, array( 'pickerOptions' =>array('format' => 'dd/mm/yyyy hh:ii','autoclose' => true,)))
->add('dateFinReelle', DateTimeType::class)
->add('budgetAdepenser')
->add('budgetDepense');
// $builder->get('projet')->addModelTransformer(new IdToProjetTransformer($this->entityManager));
$formModifier = function (FormInterface $form, Client $client = null) {
$contacts = null === $client ? [] : $client->getContacts();
$form->add('rapporteurExterne', EntityType::class, [
'class' => Contact::class,
//'placeholder' => '',
'choices' => $contacts,
]);
$form->add('responsableExterne', EntityType::class, [
'class' => Contact::class,
//'placeholder' => '',
'choices' => $contacts,
]);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
// this would be your entity, i.e. SportMeetup
$data = $event->getData();
$client = null;
if (is_object($data->getProjet()) and is_object($data->getProjet()->getClient())) {
$client = $data->getProjet()->getClient();
}
$formModifier($event->getForm(), $client);
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Tache::class,
]);
}
public function getName()
{
return 'dtc_projetsbundle_tache';
}
public function getBlockPrefix():string
{
return 'dtc_projetsbundle_tache';
}
}