Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony2] Une liste déroulante qui dépendant d'une autre

Sujet résolu
23 août 2012 à 17:00:05

Salut,

Désolé de remonter une nouvelle fois ce post très intéressant.
Grâce à vous j'ai pu mettre en place ma liste déroulante liée en fonction de la première.

Cependant j'ai un problème.
J'ai une première liste déroulante qui correspond à une entité, et une seconde à une autre.

Pour la seconde entité, je la déclare comme suit :

<?php
    	->add('source', 'entity', array('class' => "IcmeGrcBundle:Compte", 'property' => 'societe', 'empty_value' => ''))


Cette liste, suivant le choix de la première liste, peut contenir soit l'entité Compte, soit Contact.

Le problème est que comme je la déclare en tant que Compte, lorsque je lui soumet un contact, mon formulaire ne veut pas prendre la valeur et s'arrête au niveau du isValid().

Voici mon action dans mon controller :

<?php
public function remplirSourceAction()
	{
	
		$request = $this->getRequest();
	
		if($request->isXmlHttpRequest()) // pour vérifier la présence d'une requete Ajax
		{
			$idSource = $request->request->get('id');
	
			if ($idSource != null)
			{
				if($idSource == 1) // compte
				{
					$comptes = $this->getDoctrine()
					->getEntityManager()
					->getRepository('IcmeGrcBundle:Compte')->findAll();
					//->findBy(array('compte' => $idSource));
				
					$tabComptes = array();
					$i = 0;
					foreach($comptes as $c) // pour transformer la réponse à ta requete en tableau qui replira le select2
					{
						$tabComptes[$i]['idC'] = $c->getId();
						$tabComptes[$i]['nomC'] = $c->getSociete()->getNom();
						$i++;
					}
					
					$response = new Response();
					$comptes = json_encode($tabComptes);
					$response->headers->set('Content-Type', 'application/json');
					$response->setContent($comptes);
					return $response;
				}
				if($idSource == 2) // contact
				{
					$contacts = $this->getDoctrine()
					->getEntityManager()
					->getRepository('IcmeGrcBundle:Contact')->findAll();
					//->findBy(array('compte' => $idSource));
					$tabContacts = array();
					$i = 0;
					foreach($contacts as $c) // pour transformer la réponse à ta requete en tableau qui replira le select2
					{
						$tabContacts[$i]['idC'] = $c->getId();
						$tabContacts[$i]['nomC'] = $c->getPersonne()->getNom();
						$tabContacts[$i]['prenomC'] = $c->getPersonne()->getPrenom();
						$i++;
					}
					$response = new Response();
					$contacts = json_encode($tabContacts);//array('contacts' => $contacts));
					$response->headers->set('Content-Type', 'application/json');
					$response->setContent($contacts);
					return $response;
				}
			}
		}
	}




Merci d'avance.
  • Partager sur Facebook
  • Partager sur Twitter
23 août 2012 à 23:45:17

Tu ferais mieux de créer un nouveau sujet en mettant un lien vers celui-ci. Là, il nous faudra un peu plus d'informations sur les relations entre les trois entités qu'il me semble déceler, et continuer la conversation ici n'est pas indiqué ;) .

En plus, tu as fait remonter un sujet notifié comme étant résolu (statut que seul l'auteur du sujet peut changer), donc peu de monde viendrait t'aider… et personne ne saura quand ton souci aura été réglé sans venir lire le sujet, ce qui ne fait pas partie de la philosophie du site ^^ .
  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2013 à 13:21:16 - Message modéré pour le motif suivant : Déterrage


21 mai 2014 à 2:49:16 - Message modéré pour le motif suivant : Deterrage


21 mai 2014 à 4:37:02 - Message modéré pour le motif suivant : Message complètement hors sujet


21 mai 2014 à 9:22:48

Bonjour, ce topic est résolu depuis longtemps,

je t'invite à créer ton propre sujet.

  • Partager sur Facebook
  • Partager sur Twitter