Saving form with Collection
Bonjour,
J'ai un formulaire des des collections et je n'arrive pas a enregistrer en BDD les données saisies.
J'ai 2 entités :
Leads.php (extrait) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| **
* Leads
*
* @ORM\Table(name="leads")
* @ORM\Entity(repositoryClass="BackBundle\Repository\LeadsRepository")
*/
class Leads {
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="Canal",cascade={"persist"})
* @ORM\JoinColumn(name="canal_id", referencedColumnName="id", nullable=false)
* @Assert\Valid
*/
private $canalId;
/**
* @ORM\ManyToMany(targetEntity="Client", cascade={"persist"})
* @ORM\JoinTable(name="leads_client")
*
* @Assert\Valid
*
*/
private $contacts; |
Client.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| /**
* ClientContact
*
* @ORM\Table(name="client")
* @ORM\Entity(repositoryClass="BackBundle\Repository\ClientRepository")
*/
class Client {
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
* @Assert\NotBlank(message = "client.nom.not_blank")
*/
private $nom;
/**
* @var string
*
* @ORM\Column(name="prenom", type="string", length=255)
*/
private $prenom;
/**
* @var string
*
* @ORM\Column(name="telephone1", type="string", length=255)
* @Assert\NotBlank(message = "client.telephone.not_blank")
*/
private $telephone1;
/**
* @var string
*
* @ORM\Column(name="telephone2", type="string", length=255)
*/
private $telephone2;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255)
*/
private $email;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="TypeRelation")
* @ORM\JoinColumn(name="relationtype_id", referencedColumnName="id", nullable=false)
*/
private $relationtypeId;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="TypeProspect")
* @ORM\JoinColumn(name="typeprospect_id", referencedColumnName="id", nullable=false)
*/
private $typeprospectId;
/**
* @var \DateTime
*
* @ORM\Column(name="date_create", type="datetimetz")
*/
private $dateCreate;
} |
Mon controlleur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| /**
* @Route("/new", name="newapport")
*/
public function newAction(Request $request) {
$currentdate = new \DateTime('now'); //Date du jour
$leads = new Leads();
$leadsRepository = $this->getDoctrine()->getManager()->getRepository("BackBundle:Leads");
$leadsLines = $leadsRepository->findLastNumberByDateOrdered($currentdate->format('ymd'), "DESC");
$nbSuivant = "0001";
if (count($leadsLines) > 0) {
$nbSuivant = str_pad(substr($leadsLines[0]->getNumeroLeads(), 6) + 1, 4, "0", STR_PAD_LEFT);
}
$refNumeroLeadsNew = $currentdate->format('ymd') . $nbSuivant;
$leads->setNumeroLeads($refNumeroLeadsNew);
$client = new Client();
$leads->addLeadsClient($client);
$CommentaireLeads = new CommentaireLeads();
$leads->setLeadsApporteurAssociations($CommentaireLeads);
$statutapportRepository = $this->getDoctrine()->getManager()->getRepository("BackBundle:StatutLeads");
$statutapport = $statutapportRepository->find(1);
$leads->setStatutId($statutapport);
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(LeadsType::class, $leads);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$leads = $form->getData();
if ($form->isValid()) {
if ($form->get('save')->isClicked()) {
$this->get('session')->getFlashBag()->add('notice', array('type' => 'error', 'title' => 'Erreur!', 'message' => 'SAVE'));
}
if ($form->get('sendToCRC')->isClicked()) {
$this->get('session')->getFlashBag()->add('notice', array('type' => 'error', 'title' => 'Erreur!', 'message' => 'SEND TO CRC'));
}
$em->persist($leads);
$em->flush();
$this->get('session')->getFlashBag()->add('notice', array('type' => 'success', 'title' => 'Fait!', 'message' => 'Formulaire OK!'));
$this->redirectToRoute("suiviapports");
} else {
$this->get('session')->getFlashBag()->add('notice', array('type' => 'error', 'title' => 'Erreur!', 'message' => 'Formulaire INVALIDE!'));
}
}
return $this->render('BackBundle:Apport:detail.html.twig', array(
'form' => $form->createView(),
'action' => "add",
));
} |
Es-ce al bonne méthode pour enregistrer ? j'ai une erreur : "The class 'Doctrine\Common\Collections\ArrayCollection' was not found in the chain configured namespaces BackBundle\Entity, FOS\UserBundle\Model"
Merci