2009-08-05 6 views
0

J'ai une boîte automatique complète qui est remplie avec la liste des utilisateurs de l'application. Cela fonctionne bien avec la boîte listant les utilisateurs.comment sélectionner plusieurs entrées d'une boîte automatique complète dans cakephp?

Mais je ne peux sélectionner qu'un seul utilisateur. Comment sélectionner plusieurs utilisateurs de la liste? Et aussi comment enregistrer les noms des utilisateurs sélectionnés dans une variable ou un tableau?

EDIT

J'utilise la fonctionnalité complète intégrée automatique du framework CakePHP. C'est l'action dans le contrôleur qui génère la boîte de texte automatique complète.

function autoComplete() 
{ 
    $this->set('users',$this->User->find('all',array(
            'fields'=>array('User.id','User.name'), 
    'conditions'=>array('User.name LIKE' => $this->data['User']['name'].'%')))); 

    $this->layout = "ajax"; 
} 

C'est le fichier auto_complete.ctp

<ul> 
    <?php foreach($users as $user): ?> 
     <li><?php echo $user['User']['name']; ?></li> 
    <?php endforeach; ?> 
</ul> 

Et ceci est le point de vue où j'ai la boîte complète auto:

<?php echo $form->create('User', array('url' => '/forms/share')); ?> 

    <?php echo $ajax->autoComplete('User.name', '/forms/autoComplete');?> 

<?php echo $form->end('Share');?> 

Dans la boîte auto complète, je suis en mesure pour sélectionner un seul nom d'utilisateur. comment puis-je sélectionner plusieurs utilisateurs avec une virgule ou un séparateur d'espace?

+0

Il serait utile d'en savoir plus sur la façon dont la boîte de saisie semi-automatique est remplie et affichée. Par exemple, est-il peuplé par un appel ajax et présenté comme une superposition HTML ou est-ce une boîte de multi-sélection (en utilisant le contrôle de formulaire)? –

Répondre

1

Je ne pense pas que l'AjaxHelper puisse produire une boîte auto-complète à sélection multiple, ce n'est pas ce à quoi elle est destinée. J'ai peur que vous deviez rouler votre propre solution. Puisque vous avez déjà une bonne liste via Ajax, cela ne devrait pas poser trop de problèmes. Si vous voulez quelque chose comme la boîte à étiquettes Stack Overflow, vous pouvez probablement vous débrouiller en plaçant quelques rappels Javascript dans l'assistant, si vous cherchez une liste basée sur checkbox, vous aurez besoin de faire votre propre.

+0

J'ai besoin de quelque chose comme la boîte à étiquettes Stack Overflow. Pourriez-vous me guider plus sur la façon de faire cela? – Angeline

+0

Consultez les options de rappel: http://book.cakephp.org/view/211/Callback-Options Une suggestion rapide impliquerait un rappel «avant» et «complet». Si possible, modifiez la requête qui est envoyée au serveur pour inclure uniquement la dernière "balise", ou demandez au serveur de ne prendre en compte que la dernière partie de la requête. Enregistrez le contenu du champ de texte avant qu'ils ne soient envoyés dans une variable et reliez-les avec le nouveau résultat à la fin. Quelque chose dans ce sens, mais je ne sais pas si c'est faisable ou si rouler votre propre script pourrait être plus rapide et plus propre. – deceze

+0

ok, pourriez-vous me dire comment enregistrer l'entrée sélectionnée de la liste de suggestions automatiques dans une variable, afin qu'elle puisse être transmise à d'autres fonctions? – Angeline