Bonjour a tous,
Je rencontre un petit problème avec système de catégorie sous catégorie.
Chacun de mes posts sont relié a une entity sous-category qui elle meme est relié avec une entité category,
Mon système fonctionne parfaitement, seulement, au moment de l'envoie de formulaire, le champs subCategory me renvoit son ID au lieu de l'objet, je tourne en rond depuis pas mal de temps, alors je solicite votre aide
Voici mon formulaire PostType :
<?php
namespace App\Form;
// uses
class PostType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', TextType::class, array('required' => true))
->add('description', TextareaType::class, array('required' => true, 'data'=>'Hello les students,'))
->add('location' , NumberType::class, array('required' => true))
->add('price', TextType::class, array('required' => false))
->add('type', ChoiceType::class, array(
'required' => true,
'expanded' => true,
'multiple' => false,
'choices' => array(
'Un objet' => 1,
'Un service' => 2,
),
))
->add('paiement', ChoiceType::class, [
'choices' => [
'Par heure' => 'h',
'Par jour' => 'j',
'fixe' => 'fixe',
'non remunéré' => 'none',
],
"placeholder" => "Choisir un moyen de paiement",
'required' => true
])
->add('category', EntityType::class, [
'class' => Category::class,
'required' => true,
'placeholder' => 'Choisi une categorie !!',
'mapped' => false
])
->add('save', SubmitType::class, [
'attr' => [
'class' => 'btn btn-primary float-right'
]
])
;
$builder->get('category')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event){
$form = $event->getForm();
//le probleme se situe ici, il me renvoit l'id de la subCat...
$form->getParent()->add('subCategory', EntityType::class, [
'class' => SubCategory::class,
'placeholder' => 'Choisi une sous-categorie',
'choices' => $form->getData()->getSubCategories()
]);
}
);
$builder->get('type')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event){
$form = $event->getForm();
$data = $event->getData();
if($data == "1"){
$form->getParent()->add('category', EntityType::class, [
'class' => Category::class,
'placeholder' => 'Choisi Categorie Service',
"query_builder" =>function (CategoryRepository $cr){
return $cr->findCat(0);
},
'required' => true,
'mapped' => false
]);
}elseif($data == "2"){
$form->getParent()->add('category', EntityType::class, [
'class' => Category::class,
'placeholder' => 'Choisi Categorie Objet',
"query_builder" =>function (CategoryRepository $cr){
return $cr->findCat (1);
},
'required' => true,
'mapped' => false
]);
}
}
);
$builder->addEventListener(
FormEvents::POST_SET_DATA,
function (FormEvent $event){
$form = $event->getForm();
$data = $event->getData();
$subCategory = $data->getSubCategory();
if($subCategory){
$form->get('category')->setData($subCategory->getCategory());
$form->add('subCategory', EntityType::class, [
'class' => SubCategory::class,
'placeholder' => 'Choisi une sous-categorie',
'choices' => $subCategory->getCategory()->getSubCategories()
]);
}else{
$form->add('subCategory', EntityType::class, [
'class' => SubCategory::class,
'placeholder' => 'Choisi une sous-categorie',
'choices' => []
]);
}
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Post::class,
]);
}
}
Si vous avez besoin de plus d'information pour potentiellement m'éclairer, dites le moi ;)
Merci d'avance pour votre aide et bon journée,
Antoine