<?php
namespace App\Form\Articles;
use App\DataTransformer\Fournisseurs\IdToFournisseurTransformer;
use App\Entity\Articles\ConditionAchat;
use App\Entity\Fournisseurs\Fournisseur;
use App\Form\Fournisseurs\FournisseurType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormInterface;
class ArticleDiversType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('referenceFournisseur')
->add('libelle')
//->add('conditionnement')
->add('defaut')
//->add('quantite')
->add('prixAchatBrut')
->add('tauxRemise')
->add('tauxRemiseSupplementaire')
->add('prixAchatNet')
//->add('fournisseur')
->add('fournisseur', EntityType::class, [
'multiple' => false, // Wether or not multiple values are allowed (default to false)
'class' => Fournisseur::class,
'attr' => [
'class' => 'select2-hidden-accessible',
],
])
//->add('fournisseur', new FournisseurType($this->entityManager))
->add('article', ArticleType::class);
// $builder->get('fournisseur')->addModelTransformer(new IdToFournisseurTransformer($this->entityManager));
$formModifier = function (FormInterface $form, Fournisseur $fournisseur = null) {
if (is_object($fournisseur) && ($fournisseur->getDivers() == 1)) {//|| $fournisseur->getTva() == ''
$form->add('fournisseurPlus', FournisseurType::class, [
'data_class' => Fournisseur::class,
], ['validation_groups' => ['articleDivers']]);
}
/*else {
$form->add('fournisseur', EntityType::class, array(
'data_class' => 'DTC\FournisseursBundle\Entity\Fournisseur',
'configs' => array(
'multiple' => false, // Wether or not multiple values are allowed (default to false)
)
));
}
*
*/
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getFournisseur());
}
);
$builder->get('fournisseur')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
// It's important here to fetch $event->getForm()->getData(), as
// $event->getData() will get you the client data (that is, the ID)
$fournisseur = $event->getForm()->getData();
// since we've added the listener to the child, we'll have to pass on
// the parent to the callback functions!
$formModifier($event->getForm()->getParent(), $fournisseur);
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => ConditionAchat::class,
'validation_groups' => ['articleDivers'],
]);
}
public function getName()
{
return 'dtc_articlesbundle_conditionachat';
}
public function getBlockPrefix():string
{
return 'dtc_articlesbundle_conditionachat';
}
}