Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Formulaire de Recherche d'utilisateurs

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je suis un nouvel utilisateur de Drupal qui m'a grandement convaincu pour l'instant !

J'aimerais savoir comment mettre en œuvre une recherche d'utilisateur personnalisée ? En gros, j'aimerais avoir un formulaire de recherche avec des champs tels que le nom, le prénom, la date de naissance de l'utilisateur.

Y a-t-il des modules qui réalisent cela ? Ou une astuce pour modifier le module Search existant ? J'ai cherché mais sans succès...

Merci d'avance pour votre aide.

Version de Drupal : 

Hello !

As-tu regardé du côté du module Views ?

Il permet d’afficher des listes (notamment d’utilisateurs) et d’exposer les filtres utilisés à l’utilisateur

Voici un exemple rapide obtenu avec Views. Il crée une page dont le chemin est /rechercheutilisateur. Il suffit de copier-coller ce code dans Views via sa fonction d’import. En théorie, ça devrait marcher étant donnée la simplicité de la vue mais je n’ai jamais testé ;-)

$view = new view; $view->name = 'infouser'; $view->description = 'Infos utilisateurs'; $view->tag = ''; $view->view_php = ''; $view->base_table = 'users'; $view->is_cacheable = FALSE; $view->api_version = 2; $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ $handler = $view->new_display('default', 'Paramètres par défaut', 'default'); $handler->override_option('fields', array( 'mail' => array( 'label' => 'Adresse électronique', 'alter' => array( 'alter_text' => 0, 'text' => '', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'strip_tags' => 0, 'html' => 0, ), 'link_to_user' => 'mailto', 'exclude' => 0, 'id' => 'mail', 'table' => 'users', 'field' => 'mail', 'relationship' => 'none', ), 'created' => array( 'label' => 'Date de création', 'alter' => array( 'alter_text' => 0, 'text' => '', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'strip_tags' => 0, 'html' => 0, ), 'date_format' => 'small', 'custom_date_format' => '', 'exclude' => 0, 'id' => 'created', 'table' => 'users', 'field' => 'created', 'relationship' => 'none', ), 'language' => array( 'label' => 'Langue', 'alter' => array( 'alter_text' => 0, 'text' => '', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'strip_tags' => 0, 'html' => 0, ), 'link_to_user' => 1, 'exclude' => 0, 'id' => 'language', 'table' => 'users', 'field' => 'language', 'relationship' => 'none', ), 'name' => array( 'label' => 'Nom', 'alter' => array( 'alter_text' => 0, 'text' => '', 'make_link' => 0, 'path' => '', 'link_class' => '', 'alt' => '', 'prefix' => '', 'suffix' => '', 'help' => '', 'trim' => 0, 'max_length' => '', 'word_boundary' => 1, 'ellipsis' => 1, 'strip_tags' => 0, 'html' => 0, ), 'link_to_user' => 1, 'overwrite_anonymous' => 0, 'anonymous_text' => '', 'exclude' => 0, 'id' => 'name', 'table' => 'users', 'field' => 'name', 'relationship' => 'none', ), )); $handler->override_option('filters', array( 'status' => array( 'operator' => '=', 'value' => '1', 'group' => '0', 'exposed' => FALSE, 'expose' => array( 'operator' => FALSE, 'label' => '', ), 'id' => 'status', 'table' => 'users', 'field' => 'status', 'relationship' => 'none', ), 'uid' => array( 'operator' => 'in', 'value' => '', 'group' => '0', 'exposed' => TRUE, 'expose' => array( 'use_operator' => 0, 'operator' => 'uid_op', 'identifier' => 'uid', 'label' => 'Utilisateur : Nom', 'optional' => 1, 'remember' => 0, 'reduce' => 0, ), 'id' => 'uid', 'table' => 'users', 'field' => 'uid', 'relationship' => 'none', ), )); $handler->override_option('access', array( 'type' => 'none', )); $handler->override_option('cache', array( 'type' => 'none', )); $handler = $view->new_display('page', 'Page', 'page_1'); $handler->override_option('path', 'rechercheutilisateur'); $handler->override_option('menu', array( 'type' => 'none', 'title' => '', 'description' => '', 'weight' => 0, 'name' => 'navigation', )); $handler->override_option('tab_options', array( 'type' => 'none', 'title' => '', 'description' => '', 'weight' => 0, ));

Merci pour ta réponse.

Pour l'instant, j'ai +/- su me débrouiller à l'aide du module "Finder" qui me permet de faire de la recherche de views. Et je crée donc un formulaire de recherche de views avec les infos des utilisateurs.

Je ne sais pas si c'est optimal ni si ça fonctionne nickel car je n'ai testé que sur un utilisateur et avec un seul champ de recherche.

Je vais aussi tester ton idée ! Merci beaucoup !