Bonjour, j'ai un soucis sous Symfony2
J'ai 4 entités :
Contact qui étent de FOSUserbundle
Company
ContactsCompanies
Position
Mon entité Company est similaire a mon entité Contact .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
78
79
80
81 <?php namespace Site\UserBundle\Entity; use FOS\UserBundle\Entity\User as BaseUser; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="Contacts") */ class Contact extends BaseUser { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\OneToMany(targetEntity="Site\CoreBundle\Entity\ContactsCompanies", mappedBy="contact", cascade={"persist"}) */ protected $contacts_companies; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Constructor */ public function __construct() { parent::__construct(); $this->contacts_companies = new \Doctrine\Common\Collections\ArrayCollection(); } /** * Add contacts_companies * * @param \Site\CoreBundle\Entity\ContactsCompanies $contactsCompanies * @return Contact */ public function addContactsCompanie(\Site\CoreBundle\Entity\ContactsCompanies $contactsCompanies) { $this->contacts_companies[] = $contactsCompanies; return $this; } /** * Remove contacts_companies * * @param \Site\CoreBundle\Entity\ContactsCompanies $contactsCompanies */ public function removeContactsCompanie(\Site\CoreBundle\Entity\ContactsCompanies $contactsCompanies) { $this->contacts_companies->removeElement($contactsCompanies); } /** * Get contacts_companies * * @return \Doctrine\Common\Collections\Collection */ public function getContactsCompanies() { return $this->contacts_companies; } }
Mon formType ContactType:
Mon ContactsCompaniesType:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('username', null, array('label' => 'contact.form.username', 'attr' => array('placeholder' => 'contact.form.username', 'class' => 'col-sm-6'))) ->add('email', null, array('label' => 'contact.form.email', 'attr' => array('placeholder' => 'contact.form.email', 'class' => 'col-sm-6'))) ->add('password', 'password', array('label' => 'contact.form.password', 'attr' => array('placeholder' => 'contact.form.password', 'class' => 'col-sm-6'))) ->add('firstname', null, array('label' => 'contact.form.firstname', 'attr' => array('placeholder' => 'contact.form.firstname', 'class' => 'col-sm-6'))) ->add('lastname', null, array('label' => 'contact.form.lastname', 'attr' => array('placeholder' => 'contact.form.lastname', 'class' => 'col-sm-6'))) ->add('phone', null, array('label' => 'contact.form.phone', 'attr' => array('placeholder' => 'contact.form.phone', 'class' => 'col-sm-6'))) ->add('fax', null, array('label' => 'contact.form.fax', 'attr' => array('placeholder' => 'contact.form.fax', 'class' => 'col-sm-6'))) ->add('mobilephone', null, array('label' => 'contact.form.mobilephone', 'attr' => array('placeholder' => 'contact.form.mobilephone', 'class' => 'col-sm-6'))) ->add('job', null, array('label' => 'contact.form.job', 'attr' => array('placeholder' => 'contact.form.job', 'class' => 'col-sm-6'))) ; $builder->add('contacts_companies', 'collection', array('type' => new ContactCompanyType(), 'label'=> false)); }
Dans mon controlleur j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('position', 'entity', array( 'label' => false, 'class' => 'SiteCoreBundle:Position', 'property' => 'name', 'multiple' => false) ) ; }
Le soucis en gros c'est que mon formulaire "Contact" s'affiche bien, sauf que j'ai pas l'attribut Position (donc mon select) qui dépend de ContactsCompanies
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /** * Creates a new User entity. * */ public function createAction(Request $request) { $entity = new User(); $form = $this->createCreateForm($entity); $form->handleRequest($request); if ($form->isValid()) { $companyid = $this->get('site_user.provider')->getUser()->getDefaultcompany(); $company = $this->getDoctrine() ->getRepository('SiteCoreBundle:Company') ->find($companyid); // On persist la companie et on l'insert en base $em = $this->getDoctrine()->getManager(); $userManager = $this->container->get('fos_user.user_manager'); $newUser = $userManager->createUser($entity); $newUser = $entity; $newUser->setPlainPassword($entity->getPassword()); $newUser->setEnabled(true); $newUser->setDefaultcompany($companyid); $userManager->updateUser($newUser); // On créer un objet ContactsCompanies et on le persist $contact_company = new ContactsCompanies(); $contact_company->setUser($newUser); $contact_company->setCompany($company); $contact_company->setPosition($entity->getPosition()); $em->persist($contact_company); // On ajoute en base les objets persistés $em->flush(); return $this->redirect($this->generateUrl('contact_show', array('id' => $entity->getId()))); } return $this->render('SiteCoreBundle:Contact:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView(), )); }
Si quelqu'un peut m'aider ce serait génial.
Dans le même temps vu que je débute sous SF si quelqu'un peu me donner des conseils sur ma synthaxe ce ne serait pas de refus
Merci d'avance
Partager