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 :
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',
);
}
} |
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 :
1 2 3
| CnceAnnuaireBundle_Rech_Contact_by_site:
pattern: /contact/rechbySite/{nomsite}
defaults: { _controller: CnceAnnuaireBundle:Contact:RechBySite,nomsite:'' } |
L' action elle se definit comme suit :
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
));
} |
Mon problème
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
Partager