[Resolu]hook form champ d'autocompletion et hook menu

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,

J'ai créé une view avec un champ d'autocompletion exposé.
Je voudrais modifier les valeurs fournies par la liste d'autocomplétion mais je ne sais pas trop comment faire pour changer la liste des valeurs qui est retournée par une fonction.

Je ne sais pas sous quelle forme cela doit se présenter.

Voici ce que je pensais faire, pourriez-vous me dire si la démarche est la bonne

<?php
function hook_form_alter(&$form, $form_state, $form_id){
    if(
$form_id=="mon_form"){
       
$form['mon_champ_expose_view']['#autocomplete_path'] = 'ma_fonction_qui_definit_autocomplete';
 
    );         

   }
}

function
ma_fonction_qui_definit_autocomplete() {
  
//sous quelle format dois-je définir mes valeurs?
   //si par exemple je veux mettre 'toto', 'titi', 'tutu' ?

}
?>

Merci de votre aide

Forum : 
Version de Drupal : 

j'ai un peu avancé en m'inspirant du module views mais je bloque sur le hook menu.

<?php
<?php
function magasin_form_alter(&$form, $form_state, $form_id){
 
    if(
$form['#id']=='views-exposed-form-chercher-magasin-default'){
       
$form['uid']['#autocomplete_path'] = 'admin/magasin/ajax/autocomplete/user';
      
      
      
/* Chemin #autocomplete_path par défaut
        admin/views/ajax/autocomplete/user 
       */
   
}
}



function
magasin_menu() {
   
$items = array();
 
       
//creation du chemin    
 
$items['admin/magasin/ajax/autocomplete/user'] = array(
   
'page callback' => 'magasin_ajax_autocomplete_user',
   
'access callback' => 'user_access',
   
'access arguments' => array('access content'),
   
'type' => MENU_CALLBACK,
  );
  return
$items;
}

//function qui affiche la page du chemin
function magasin_ajax_autocomplete_user($string = '') {
 
// The user enters a comma-separated list of tags. We only autocomplete the last tag.
 
$array = drupal_explode_tags($string);

 
// Fetch last tag
 
$last_string = trim(array_pop($array));
 
$matches = array();
  if (
$last_string != '') {
   
$prefix = count($array) ? implode(', ', $array) . ', ' : '';

    if (
strpos('anonymous', strtolower($last_string)) !== FALSE) {
     
$matches[$prefix . 'Anonymous'] = 'Anonymous';
    }

   
//ça veut dire quoi cette requête LIKE LOWER('$last_string') ?
   
$result = db_query_range("SELECT name FROM {users} WHERE LOWER(name) LIKE LOWER('%s%%')", $last_string, 0, 10);

    while (
$account = db_fetch_object($result)) {
     
$n = $account->name;
     
// Commas and quotes in terms are special cases, so encode 'em.
     
if (strpos($account->name, ',') !== FALSE || strpos($account->name, '"') !== FALSE) {
       
$n = '"' . str_replace('"', '""', $account->name) . '"';
      }
     
$matches[$prefix . $n] = check_plain($account->name);
    }
  }

 
drupal_json($matches);
}
?>

Mon problème c'est que je suis actuellement bloquée car quand je test j'obtiens le message d'erreur "Une erreur HTTP 404 s'est produite.
http://localhost/vitrines_roanne/admin/magasin/ajax/autocomplete/user"

Si je vais à ce chemin j'ai bien un page 404 mais si je vais à celui de views j'obtiens une page avec [ ] uniquement mais pas 404.

Pourriez-vous m'expliquer pourquoi, alors que j'ai bêtement (peut être trop bêtement) recopié les functions de views

Grâce à Yoran, sur un autre post j'ai pu valider mon hook menu en vidant le cache des menus.

Et là, oh miracle ça a fonctionné.

J'ai plus eu qu'à bidouiller ma requête pour quelle me retourne ce que je veux et youpi tralala!

:-)

Salut j'utilise aussi une vue avec des filtres exposés avec un champ autocomplete

le souci c'est que les anonymes n'ont pas accès à l'autocomplete, mais simplement à un champ banal.
est ce que tu as le même souci?

tu as une idée de comment s'en affranchir, je ne trouve pas ça dans les droits d'accès...