depuis peu je cherche à réaliser un formulaire de recherche pour afficher la liste de contact selon le champ d'un formulaire
[IMG]Bureau\formRech[/IMG]
Le formulaire est definit comme suit :
Lorsque le formulaire ci-dessus s'affiche, on met le nom d'un site et en cliquant sur le bonton "Rechercher tous le contact" on execute l'action RechBySite du controleur Contact definit par la route :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php namespace Cnce\AnnuaireBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class ContactRechercheForm extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { // Champ de recherche full text $builder->add('Nom', 'text', array('label' => 'Choix du Site ')); } public function getName() { return 'contactrecherche'; } public function getDefaultOptions(array $options) { return array( 'data_class' => 'Cnce\AnnuaireBundle\Entity\Site', ); } }
L' action elle se definit comme suit :Code:
1
2
3 CnceAnnuaireBundle_Rech_Contact_by_site: pattern: /contact/rechbySite/{nomsite} defaults: { _controller: CnceAnnuaireBundle:Contact:RechBySite,nomsite:'' }
Mon problèmeCode:
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 //Executer laction RechBySiteAction du controleur public function RechBySiteAction($nomsite) // je veux récupérer comme paramètre le champ du formulaire { /* Tableau qui va stocker toutes les données à remplacer dans le template twig */ $variables = array(); // Récupération de l'entity manager qui va nous permettre de gérer les entités. $entityManager = $this->get('doctrine.orm.entity_manager'); // On recherche dans la table Site l'enregistremnet qui correspond au nomsite reçut par l'url et on stocke l'objet Site dans une variable $selected_site = $entityManager->getRepository("Cnce\\AnnuaireBundle\\Entity\\Site")->findBy(array("nomsite" => $nomsite)); // Si le site passé par l'url existe bien, on passe l'id à notre template if(isset($selected_site[0])) { $variables['selected_site'] = $selected_site[0]->getId(); } // Sinon on renvoie 0, aucun site n'a été sélectionné else { $variables['selected_site'] = 1; // on affiche les contact du SED } // Récupération de la liste des contacts grâce à notre méthode findBySite. $contact_list = $entityManager->getRepository("Cnce\\AnnuaireBundle\\Entity\\Contact")->findBySite($variables['selected_site']); $variables['Contacts'] = $contact_list; // On récupère le nombre total de contacts en comptant simplement le resultat de la recheche de tous les contacts $variables['total_nb_contacts'] = count($entityManager->getRepository("Cnce\\AnnuaireBundle\\Entity\\Contact")->findAll()); /* On récupère la liste des sites avec le nombre de contacts associés pour notre sidebar */ $variables['Sites'] = $entityManager->getRepository('Cnce\\AnnuaireBundle\\Entity\\Site')->fetchAllWithContactsCount() ; /*return $this->container->get('templating')->renderResponse('CnceAnnuaireBundle:Contact:ResultatRech.html.twig', array( 'contact_list' => $contact_list ));*/ return $this->container->get('templating')->renderResponse('CnceAnnuaireBundle:Contact:ResultatRech.html.twig', array( 'contact_list' => $contact_list )); }
J'arrive à avoir le resultat quand je test en saisissant le nom du site dans l'url mais je souhaite maintenant mettre en paramètre le champ sur le formulaire dans la l'action RechBySiteAction; en fait je souhaite remplacer $nomsite par ce que je sais pas , aidez-moi je maitrise pas SF2