Mik Info - Base de connaissances sur l'informatique

Lien vers l'article :

L’autocomplétion dans Symfony (suite et fin)

Publié le 13/02/2012 dans Développement Web,Javascript,PHP

Ce (court) billet vient compléter mon petit tutoriel sur l’utilisation du sfWidgetFormJQueryAutocompleter dans Symfony. Cette fois, j’explique comment se servir du paramètre « value_callback » qui permet de formater la valeur du widget avant de l’afficher à l’utilisateur.

Je ne vais pas recopier l’intégralité du code de l’ancien article que vous pouvez de toute façon retrouver ici, là je mets simplement ce qui est ajouté.

La classe du formulaire :

    $this->widgetSchema['user_id'] = new sfWidgetFormJQueryAutocompleter(array(
        'url'             => url_for('@autocomplete_user'),
        'config'          => '{scrollHeight: 200, minChars: 1, delay: 350}',
        'value_callback'  => array('User', 'getUsernameFromId')
    ));

Le callback a besoin du nom de la classe et de sa méthode qui va être appelée. Il reste à définir cette méthode (statique) comme ci-dessous :

La classe du modèle :

  public static function getUsernameFromId($id)
  {
    $result = Doctrine::getTable('User')->find($id);
    return $result ? $result->getUsername() : null;
  }

Et voilà le tour est joué ! Dans cet exemple, c’est bien le nom du membre qui sera affiché après validation du formulaire au lieu de son identifiant ce qui est quand même un peu plus « user-friendly »