sfWidgetFormDoctrineJQueryAutocompleter

sfWidgetFormDoctrineJQueryAutocompleter

1 – Installation du plugin sfFormExtraPlugin

2 – Création du formulaire de recherche  lib/form/doctrine/RechercheIndividuForm.class.php :

<?php
class RechercheIndividuForm extends BaseForm
{
  public function configure()
  {
    sfProjectConfiguration::getActive()->loadHelpers(array("Url"));
    $this->widgetSchema['individu_id'] = new sfWidgetFormDoctrineJQueryAutocompleter(
      array(
        'model' => "Individu",
        'url'   => url_for("@recherche_individu_par_nom"),
        'label' => 'Nom',
      ),
      array(
        'size' => 25
      )
    );
 }
}

3 – Modification du routing.yml :

recherche_individu_par_nom:
  url: /rechercheIndividuParNom
  param: { module: main, action: rechercheIndividuParNom }

4- Création de l’action main/rechercheIndividuParNom :

  public function executeRechercheIndividuParNom($request)
  {
    $this->getResponse()->setContentType('application/json');

    $nom = $request->getParameter('q');
    $limit = $request->getParameter('limit');

    $result = IndividuTable::getIndividusByNameLike($nom,$limit);

    return $this->renderText(json_encode($result));
  }

5 – Création de la méthode de récupération de nos individus :

  public static function getIndividusByNameLike($nom, $limit = 10)
  {
    $request = Doctrine::getTable("Individu")->createQuery()
    ->where("nom LIKE ?",$nom."%")
    ->limit($limit)
    ->orderBy('nom, prenom')
    ->execute()
    ->getData();

    $individus = array();
    foreach ( $request as $individu )
    $individus[$individu->id] = (string) $individu;

    return $individus;
  }

6 – Modification de l’action pour récupérer le formulaire dans le template :

$this->RechercheIndividuForm = new RechercheIndividuForm();

7 – Affichage du formulaire dans un template :

<?php include_stylesheets_for_form($RechercheIndividuForm) ?>
<?php include_javascripts_for_form($RechercheIndividuForm) ?>    
    <form action="<?php echo url_for('main/fiche') ?>" method="POST">
        <table>
            <?php echo $RechercheIndividuForm ?>
        </table>
    </form>

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *