Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-07-2008 12:42:53

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Exemple Autocompletion

Bonjour,

je commence à avoir une bonne expérience du développement avec le ZendFramework avec plusieurs sites qui tournent en production dont certains assez gros avec SGBD et back Office.
Pour le moment aucun n'intègre de l'Ajax mais simplement des modules Javascript qui affichent des données de la base toutes lues avant.

Je souhaite à présent être plus flexible et intégrer des facilités permises par Ajax, ce que je ne maîtrise pas encore.
Je sais que beaucoup d'entre vous ne sont pas branchés par Dojo, mais personnellement je n'ai aucun état d'âme, Zend a choisi Dojo, alors ok, je prends Dojo.

Donc pour commencer j'essaye de faire fonctionner l'exemple d'autocompletion avec Dojo qui est dans la doc sur le controller du ZF version 1.5.2 ou 3
Et rien à faire ! Je ne sais plus dans quel sens prendre le problème.
Dans cet exemple tout me semble étrange, par exemple dans le code je vois :

Code:

            $this->_form->setMethod('get')
                ->setAction($this->getRequest()->getBaseUrl() . '/test/process')
                ->addElements(array(
                    'test' => array('type' => 'text', 'options' => array(
                        'filters'        => array('StringTrim'),
                        'dojoType'       => array('dijit.form.ComboBox'),
                        'store'          => 'testStore',

Mais nulle part je ne vois dans l'exemple une action pouvant répondre à 'test/process'.

Mes questions sont peut être stupides mais je suis largué.
Quelqu'un a t-il réalisé cet exemple dans sa totalité et serait prêt à mettre ici l'intégralité du source avec l'arborescence des éléments ?
Car pour ça aussi l'exemple n'est pas clair (pour moi en tout cas).

Il y a pas mal de temps que je rame et je n'ai pas trouvé d'aide sur le Net.
Merci par avance pour votre attention.

Hors ligne

 

#2 29-07-2008 13:13:12

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Exemple Autocompletion

Pour répondre à coté de la plaque, vu que j'utilise pas Dojo et que je ne veuxpas utiliser Dojo, l'autocomplétion c'est un jeu avec le helper de zend prévu pour scriptaculous, et scriptaculous, entre le controller, la vue, le model, ça doit prendre 15 lignes de code à tout casser.

Bref j'ai longuement hésité, et scriptaculous (et donc prototype) à été la meilleure solution que j'ai trouvé pour faire de l'AJAX.

Mais bon t'as tout à fait le droit de ne pas me suivre, je postais juste pour te faire part de mes sentiments wink

Hors ligne

 

#3 29-07-2008 13:37:57

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: Exemple Autocompletion

Cette réponse je l'attendais et je pensais avoir rédigé ma question correctement pour l'éviter.

J'ai l'impression d'avoir affaire à des énarques ici :
" Dîtes-moi de quoi vous avez besoin et je vous dirais comment vous en passer"

Nul !

Zend va définitivement intégrer Dojo au ZF, voir la V1.6.
Je bosse pour plusieurs sociétés et souvent je ne discute pas des choix techniques et je dois faire avec.

Dans le cas présent je demande de l'aide, et je remercie d'avance tous ceux qui voudront bien me donner un coup de pouce.

Désolé d'être agacé alors que je réclame de l'aide, mais il y a de quoi.

Hors ligne

 

#4 29-07-2008 14:12:32

BuBBLs
Membre
Lieu: 94 <=> 75
Date d'inscription: 12-03-2008
Messages: 14
Site web

Re: Exemple Autocompletion

Je soutiens Mr Rigade, ZF intègre Dojo , il serait bon d'au moins se pencher sur la question. Et répondre à côté de la plaque sans donner de lien ou d'exemple et surtout en fesant le kakou avec des phrases du genre "mais c'est simple ! ... en 15 lignes !" cela équivaut à une réponse nule ou innexistante.

Notez, que je n'ai pas répondu à cette demande d'aide non plus. Certes. Mais je suis très intéressé par une quelconque réponse réelle sur le sujet car c'est vrai que l'exemple Dojo de la doc reste très "vague" sur le fonctionnement complet de l'autocompletion. Et je suis également un peux largué.

Si quelqu'un pouvait nous venir en aide ou juste... fournir un lien vers un exemple complet et efficace, ce serait très gentil de sa part.

Merciiiiii d'avance smile


Vous voulez sauver un arbre ?
Mangez un KsToR !

Hors ligne

 

#5 29-07-2008 14:23:17

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Exemple Autocompletion

Hello,

Il y a eu des messages sur la liste de dev au sujet de problème dans la doc de Dojo. Je ne sais pas si ça correspond à ton problème mais dans la doc, il y a aussi des bugs.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 29-07-2008 14:38:24

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: Exemple Autocompletion

Merci mikaelkael pour ta réponse.
En fait, je souhaite rester vraiment circonscrit à l'exemple d'autocompletion de la doc ZF du Controller.

J'imagine que si je parviens à faire tourner cet exemple de la façon la plus "dépouillée" possible, je serais capable de franchir les obstacles suivants.

Merci BuBBLs pour ton appui. Je vois que je ne suis pas le seul à patiner devant la doc du ZF.

Mon but est d'être capable de mettre en œuvre toutes les possibilités du ZF en respectant les choix techniques faits par Zend.

Et donc, comme BuBBLs, je rêve d'un code source limité à cet exemple d'autocompletion qui tourne, vu que mon code ne donne rien de bien positif...

Merci pour l'aide.

Dernière modification par Jean-Marc Rigade (29-07-2008 14:38:57)

Hors ligne

 

#7 29-07-2008 15:05:15

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Exemple Autocompletion

Bonjour, voici un exemple d'autocompletion qui va lire une vue en json(généré depuis une zend_db_table) dans un element de formulaire multiselect. La prochaine étape serait d'utiliser directement un Dijit (widget Dojo) cf ZF 1.6 RC1.

la table :

Code:

CREATE TABLE `catalogue` (
  `id` int(11) NOT NULL auto_increment,
  `produit` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

-- 
-- Contenu de la table `catalogue`
-- 

INSERT INTO `catalogue` (`id`, `produit`) VALUES 
(1, 'pomme'),
(2, 'orange'),
(3, 'poire'),
(4, 'abricot');

Le controleur :

Code:

class IndexController extends Zend_Controller_Action 
{
    
    public $contexts= array (
                                   'autocomplete'    => array ('json', 'xml'),
                                'rss'             => array ('xml')
                               );
 
   public function preDispatch()
   {
        $contextSwitch= $this->_helper->contextSwitch();
        $contextSwitch->setAutoJsonSerialization( false );
        $contextSwitch->initContext();
   }
    
    public function init() {
        
        $this->dojoTheme= 'tundra';    
        $this->view->dojo()->enable();
        $this->view->dojo()->addStyleSheet('.........CHEMIN VERS LE CSS DOJO....' . $this->dojoTheme . '/' . $this->dojoTheme . '.css'); 
        $this->view->dojo()->requireModule('dojo.parser');
        $this->view->dojo()->requireModule('dijit.form.ComboBox');
        $this->view->dojo()->requireModule('dojo.data.ItemFileReadStore');
    }
    
    public function indexAction()
    {    
        $this->view->dojoTheme= $this->dojoTheme;
        $myForm= new Zend_Form();
        
        $comboSelect= new Zend_Form_Element_Multiselect('autoCompleted');
        $comboSelect->setAttribs( array(    'dojoType'=> 'dijit.form.ComboBox',
                                            'store'=> 'stateStore',
                                            'searchAttr'=> 'produit',
                                            //'searchAttr'=> 'name',
                                            'id'=> 'monSelect',
                                            'name'=> 'monSelect'
                                        )
                                 );
        
        $submit= new Zend_Form_Element_Button('Envoyer');
        $this->view->form= $myForm->addElements( array( $comboSelect, $submit ) );
    }

    public function autocompleteAction() {        
    $p= new Catalogue();   /* voir sql */
        $rows= $p->fetchAll();

        $f= new Zend_Dojo_Data();       
        $f->setIdentifier('produit'); 
        $f->addItems( $rows );       
        
        $this->view->corps= $f;                            //$contextSwitch->setAutoJsonSerialization( false );            
    }
}

La vue index.phtml :

Code:

<?php
$this->headTitle('New Zend Framework + Dojo Project');
$this->placeholder('title')->set('Welcome');
?>
<?php $this->headScript()->captureStart(); ?>
var djConfig = { parseOnLoad: true, usePlainJson: true };
<?php $this->headScript()->captureEnd();?>

<div dojoType="dojo.data.ItemFileReadStore" jsId="stateStore"
        url="http://www.TONSITE.zf/html/index/autocomplete/format/json"></div>

<?php echo $this->form; ?>

+mettre dans le layout :

Code:

<body class="<?php echo $this->dojoTheme ?>">

Cela a peut etre été simplifié depuis dans l'incubateur, ce bout de code a 3 semaines.

Dernière modification par fte (29-07-2008 15:07:09)

Hors ligne

 

#8 29-07-2008 15:41:18

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Exemple Autocompletion

Je pensais avoir été clair :

"Pour répondre à coté de la plaque"
"Mais bon t'as tout à fait le droit de ne pas me suivre, je postais juste pour te faire part de mes sentiments"

A ce que je sache c'est un forum de discussions .... tu poses une question, donc attends toi aussi à des posts qui ne répondent pas forcement à ta question.

Et les réflexions prépubère genre je fai sle kakou parceque j'explique quelquechose qui n'est pas directement en rapport avec la question posée c'est plus que limite. Sachez que certains vont tomber ici, juste parce qu'ils chercheront à faire de l'autocompletion et seront surement content de tomber sur un post comme le mien.

quand à : "Désolé d'être agacé alors que je réclame de l'aide, mais il y a de quoi." Non y a pas de quoi, tu demandes de l'aide, tu patientes et quand on répond à coté surtout en prévenant, c'est pas la peine de monter sur tes grand chevaux et prendre les gens pour des cons merci.

Hors ligne

 

#9 29-07-2008 23:28:05

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: Exemple Autocompletion

Merci beaucoup pour ton aide fte.
Je vais tester ça pour voir ce que ça donne.
Cet exemple provient de la Doc du ZF1.6 ?

Après avoir fait quelques tests, je reviendrais peut être ici pour compléter le sujet.
Merci d'avoir pris le temps de fournir un exemple complet.
------------------------------------------------------------------------------

Pour sebondus, je suis encore désolé d'être agacé, décidément.
Donc je ne monte jamais sur un cheval, ni grand ni petit, et je ne prends pas les gens pour des cons, ils s'en chargent sans mon aide.
Enfin, comme tu peux le voir, je suis capable de perdre du temps, la preuve, je te réponds.

Hors ligne

 

#10 30-07-2008 09:53:48

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Exemple Autocompletion

Jean-Marc Rigade a écrit:

Merci beaucoup pour ton aide fte.
Je vais tester ça pour voir ce que ça donne.
Cet exemple provient de la Doc du ZF1.6 ?

Après avoir fait quelques tests, je reviendrais peut être ici pour compléter le sujet.
Merci d'avoir pris le temps de fournir un exemple complet.

C'est inspiré de l'exemple dans la doc 1.5.2 + tuto trouvé sur dojotoolkit.org
àmha, il faut déjà se familiariser avec Dojo seul (par ex : http://www.dojotoolkit.com/forum/dijit- … ultiselect)  puis avec dojo ZF.
Il y a d'ailleurs une écriture des memes classes pour jquery : ZendX_JQuery* http://www.beberlei.de/dev/svn/ZendX_JQuery/
(ZendX pour extra libraries, c'est pas soutenu officiellement)

Dernière modification par fte (30-07-2008 09:54:18)

Hors ligne

 

#11 05-08-2008 01:46:31

BuBBLs
Membre
Lieu: 94 <=> 75
Date d'inscription: 12-03-2008
Messages: 14
Site web

Re: Exemple Autocompletion

Salut les bosseurs ! smile

@sebondus : Merci d'avoir fait remonté le sujet smile ... Continuons notre débat.

@fte : J'ai tenté ton exemple dans la 1.6 RC1 et il me disait qu'il manquait le helper de vue Dojo... Appelée par tes :

Code:

$this->view->dojo()->...

Bon, non découragé j'ai alors modifié ta fonction init() dans ton IndexController :

Code:

public function init()
    {
        Zend_Dojo::enableView($this->view);

        $this->dojoTheme = 'tundra';
        $this->view->dojo()->enable();
...

Mais voilà, ma liste apparaît dans le code HTML rendu, mais elle ne se remplie pas... (elle devrait, non ? tongue) ... Bref, je rebloque.
C'est frustrant de ne pas pouvoir mettre le doigt sur une erreur ou un oubli. Surtout là, en Dojo (Ajax), il n'y a pas de message d'erreur ou quoi. hmm En extra : Est-il possible de mettre une option "liste de vide" ou généré tout de même une sortie en cas d'erreur... (Je suis un adepte du echo et du print_r() brutal pour ça... Mais là n'est peut-être pas ma solution ?).

Donc pour en revenir à nos moutons, niveau HTML tout le formulaire se génère nickel (attributs et lien vers css compris) en dehors de l'essentiel : ce qui est entre le "select" ouvrant et sa clôture...  Il n'y a aucune option générée. Pourtant ma base n'est pas vide. Aurais-je raté un épisode ?

... Je retourne dans la doc pour être sûr, mais si quelqu'un trouve ... smile Merci d'avance (ou pas... ou si... bref +) big_smile

Dernière modification par BuBBLs (05-08-2008 01:51:24)


Vous voulez sauver un arbre ?
Mangez un KsToR !

Hors ligne

 

#12 05-08-2008 13:59:39

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Exemple Autocompletion

Que dit firebug ? Ca doit afficher un truc comme ça :
http://www.boostupload.com/files/mini/image_481_zf_dojo_autocomplete.png

Les essais se font déjà sur la vue qui produit le json :
http://ton.site.zf/dojoViewHelper/html/ … ormat/json
qui affiche qque chose ressemblant à :

{"identifier":"produit","items":[{"id":"1","produit":"pomme"},{"id":"2","produit":"orange"},{"id":"3","produit":"poire"},{"id":"4","produit":"abricot"}]}

++

Hors ligne

 

#13 05-08-2008 14:13:50

BuBBLs
Membre
Lieu: 94 <=> 75
Date d'inscription: 12-03-2008
Messages: 14
Site web

Re: Exemple Autocompletion

Oui, je pensais me mettre à utiliser Firebug pour ce genre de problèmes... Je reviendrais ce soir quand je serais devant ma machine perso pour ça.

Sinon... MERCIIII fte pour le lien des essais... Je savais pas, mais on peut appeler un Helper directement ?!? yikes  Sans passer par la "vraie" vue (qui l'appelerait) ?
(Si c'est vrai... C'est dingue... Je me suis pris la tête pour rien roll)

Dernière modification par BuBBLs (05-08-2008 14:14:08)


Vous voulez sauver un arbre ?
Mangez un KsToR !

Hors ligne

 

#14 05-08-2008 22:39:48

BuBBLs
Membre
Lieu: 94 <=> 75
Date d'inscription: 12-03-2008
Messages: 14
Site web

Re: Exemple Autocompletion

Ok perso, c'est pas moi qui ai démarré le sujet, mais j'ai réussi !!! big_smile

Un GRAND MERCI à fte !!! Bon... Hum, merci à toi du "06 13 83" smile
Firebug
+ Le coup du lien ... qui pour moi était http://Appli-zend/test/index/autocomplete/format/json ~ Appli/module/controller/action/param... Tout ça m'a donné la sortie JSON tant attendue.
Elle était vide, mais il me manquait juste un

Code:

echo $this->corps

dans la vue ciblée (autocomplete.json.phtml) et BOOM !
Bref... Nickel Chrome fte smile

Dernière modification par BuBBLs (05-08-2008 22:44:32)


Vous voulez sauver un arbre ?
Mangez un KsToR !

Hors ligne

 

#15 26-09-2008 23:05:44

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: Exemple Autocompletion

BuBBLs a écrit:

Ok perso, c'est pas moi qui ai démarré le sujet, mais j'ai réussi !!! big_smile

Un GRAND MERCI à fte !!! Bon... Hum, merci à toi du "06 13 83" smile
Firebug
+ Le coup du lien ... qui pour moi était http://Appli-zend/test/index/autocomplete/format/json ~ Appli/module/controller/action/param... Tout ça m'a donné la sortie JSON tant attendue.
Elle était vide, mais il me manquait juste un

Code:

echo $this->corps

dans la vue ciblée (autocomplete.json.phtml) et BOOM !
Bref... Nickel Chrome fte smile

Je ne comprends pas à quel endroit tu mets le "echo $this->corps".

Tu pourrais poster tout le code par module avec tes modifs pour la version 1.6 ?
Je sais j'abuse.

Merci

Hors ligne

 

#16 04-12-2008 17:55:14

akkarin
Nouveau membre
Date d'inscription: 04-12-2008
Messages: 1

Re: Exemple Autocompletion

Bonjour,

j'aimerais savoir ou je dois placer le "echo $this->corps" pour que mes données s'affichent dans le menu.

Cordialement,

Akkarin

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages