<?php
namespace App\Controller;
use App\Entity\Souscripteur;use App\Entity\Enfant;use App\Form\SouscripteurType;use App\Repository\SouscripteurRepository;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;
/** * @Route("/souscripteur") */class SouscripteurController extends AbstractControllera{ /** * @Route("/new", name="souscripteur_new", methods={"GET","POST"}) */ public function new(Request $request): Response { $souscripteur = new Souscripteur();
$enfant = new Enfant(); $souscripteur->addEnfant($enfant);
$form = $this->createForm(SouscripteurType::class, $souscripteur); $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($souscripteur); $entityManager->flush();
return $this->redirectToRoute('souscripteur_index'); }
return $this->render('souscripteur/new.html.twig', [ 'souscripteur' => $souscripteur, 'form' => $form->createView(), ]); }
}
Could not load type "App\Entity\Enfant": class does not implement "Symfony\Component\Form\FormTypeInterface".
<?php
namespace App\Form;
use App\Entity\Souscripteur;use App\Entity\Enfant;
use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\OptionsResolver\OptionsResolver;use Symfony\Component\Form\Extension\Core\Type\ChoiceType;use Symfony\Component\Form\Extension\Core\Type\TextType;use Doctrine\ORM\EntityRepository;use Symfony\Component\Form\Extension\Core\Type\CollectionType;
class SouscripteurType extends AbstractType{ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('civilite', ChoiceType::class, [ 'choices' => [ 'Madame' => 'madame', 'Mademoiselle' => 'mademoiselle', 'Monsieur' => 'monsieur', ], ]) ->add('nom', TextType::class) ->add('prenom') ->add('nom_jeune_fille') ->add('date_naissance') ->add('pays_naissance') ->add('ville_naissance') ->add('pays_residence') ->add('ville_residence') ->add('profession') ->add('adresse') ->add('code_postal') ->add('ville') ->add('telephone') ->add('tel_domicile') ->add('situation_familiale', ChoiceType::class, [ 'choices' => [ 'Marié' => 'marie', 'Pacsé(e)' => 'pasce', 'Concubin(e)' => 'concubin', 'Célibataire' => 'celibataire', 'Divorcé(e)' => 'divorce', 'Veuf(ve)' => 'veuf', ], ]) ->add('nombre_enfants', ChoiceType::class, [ 'choices' => [ '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '8' => '8', '9' => '9', '10' => '10', ], ]) ->add('enfants', CollectionType::class, [ 'entry_type' => Enfant::class, ]) ->add('conjoint') ; }
public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Souscripteur::class, ]); }}
->add('enfants', CollectionType::class, [ 'entry_type' => EnfantType::class,])
Entity of type "App\Entity\Souscripteur" passed to the choice field must be managed. Maybe you forget to persist it in the entity manager?