Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-09-2007 10:07:22

frederic
Membre
Date d'inscription: 04-09-2007
Messages: 31

ZF et Ajax

Salut à tous,

Je souhaite développer quelques éléments en AJAX, apparamment le choix peut se porter sur plusieurs bibliothèques javascript :
- prototype
- json

Sachant que ZF intègre Zend_json, doit on nécessairement l'utiliser ou peut simplement utiliser prototype avec ZF.
En fait je n'ai que trop peu de connaissances en Ajax et vos avis sur quoi utiliser me permettraient de chercher dans une bonne direction.

Note : je ne connais ni JSON ni prototype.

Merci de vos conseils.

a+ Frédéric

Hors ligne

 

#2 13-09-2007 10:24:18

golivier
Membre
Lieu: vendée
Date d'inscription: 20-03-2007
Messages: 47
Site web

Re: ZF et Ajax

Bonjour,

Attention, il ne faut pas confondre JSON n'est pas AJAX

JSON : c'est un format. il  te donne la possibilité de transformer un objet Javascript en chaine et inversement. C'est très pratique pour par exemple répondre à une requete AJAX. Coté PHP, tu transforme une tableau associatif par exemple en format JSON et coté Javascript, tu le transforme en objet (très rapide).

Pour plus d'infos sur JSON : http://www.json.org/jsonfr.html

prototype : C'est un "framework" JavaScript qui te simplifi la vie pour les requetes AJAX
Pour plus d'infos sur prototype: http://www.prototypejs.org

Ca t'aide ?

Hors ligne

 

#3 13-09-2007 10:41:10

frederic
Membre
Date d'inscription: 04-09-2007
Messages: 31

Re: ZF et Ajax

Salut Olivier,
merci de ta réponse, donc pour faire du Ajax avec ZF on peut utiliser une librairie du type prototype sans passer par JSON ??? même si celui ci peut faciliter l'échange de données entre javascript et php (si j'ai bien compris).
je regarde les liens que tu m'as donnés.
a+ Frédéric

Hors ligne

 

#4 13-09-2007 10:58:40

golivier
Membre
Lieu: vendée
Date d'inscription: 20-03-2007
Messages: 47
Site web

Re: ZF et Ajax

Oui sans problème.
Je prépare un tuto là dessus "ZF ajax avec prototype" ... (dans quelques jours smile )


A+
Olivier

Dernière modification par golivier (13-09-2007 10:59:33)

Hors ligne

 

#5 13-09-2007 11:03:18

frederic
Membre
Date d'inscription: 04-09-2007
Messages: 31

Re: ZF et Ajax

superbe idée pour ton tuto, j'ai hate de le lire. En attendant je fais des recherches sur le web !
a+ Frédéric

Hors ligne

 

#6 13-09-2007 11:57:52

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: ZF et Ajax

Il y a aussi la librarie javascript JQuery qui simplifie les requêtes Ajax: http://docs.jquery.com/Ajax
Il faut bien comprendre que "faire de l'ajax" ce n'est que appeler un script (PHP ou autre) qui retourne du texte (ou de l'xml, mais c'est toujours du texte smile ). On peut ainsi faire ce que l'on veut du retour de la requête (modifier le contenu de la page par exemple...)

Hors ligne

 

#7 13-09-2007 12:44:44

fred wolf
Administrateur
Lieu: Bordeaux
Date d'inscription: 09-04-2007
Messages: 96

Re: ZF et Ajax

Vite fait pour l'exemple :

Dans un fichier Javascript :

Code:

var url = 'http://localhost/monSite/';

/*
-------------------------------------
           dispatch(href)
-------------------------------------
*/
function dispatch(href)
{

    var success    = function(t){dispatchResponse(t);} // dispatchResponse est la fonction exécutée à la réponse du serveur
    var result = new Ajax.Request(url + href,{onSuccess:success});

}

/*-------------------------------------
 *    dispatchResponse(t)
 *        t   server response
 *    return void
/*-------------------------------------*/

function dispatchResponse(t){

    try{
        var myContents = eval( '(' + t.responseText + ')' ); // myContents reçoit le html que tu as retourné

        }
    }
    catch (ex) {
        var error = '<br />AJAX : Une erreur est survenue ('+ex.name+' :: '+ex.message+')<br /><br />'+t.responseText;
        $('errorZone').innerHTML = error;
        $('messages').style.display = 'block';
    }
}

Maintenant du html : en cliquant sur le lien, tu appelles la fonction js "dispatch" qui appellera côté ZF le controleur FicheController et l'action NewAction.

Code:

<a href="javascript:dispatch('fiche/new/');" title="nouvelle fiche">créer une fiche</a>

Pour finir du côté PHP, tu traites la demande, tu génères du html. Personnellement, je fais dans le Response object, un truc genre  :

Code:

// Où : 
//$id est l'id du div qui recevra le html, par exemple
//$this->proxy->render('Proxy.tpl')) est en fait le render délivré par Smarty
// J'encode le tout en utf8 pasque Javascript aime bien ça
// $this->sendResponse(); retourne le tout au navigateur et la fonction dispatchResponse dans JS traite le contenu

$toDisplay[] = array($id,utf8_encode($this->proxy->render('Proxy.tpl')),null); 
                        
$json = $this->encoder->encode($toDisplay);
$this->setHeader('Content-Type', 'text/x-json; charset=UTF-8')
    ->setBody($json);
$this->sendResponse();

Tu peux édulcorer la partie du response object qui est trés spécifique pour mes besoins (à savoir, la possibilité de mettre à jour différentes parties de la page html à partitr d'une seule action).

En espérant que ça peut t'aider.

Fred

Hors ligne

 

#8 13-09-2007 13:58:02

frederic
Membre
Date d'inscription: 04-09-2007
Messages: 31

Re: ZF et Ajax

Merci de vos réponses les amis,
en attendant j'ai un peu bossé et suivit quelques tutos, notamment celui d'IBM sur Ajax en utilisant prototype.

Voici ce que j'ai fait :

Ca c'est dans mon header.tpl (template Smarty)

Code:

{literal}
<script src="/zendframework_smarty/public/scripts/prototype.js"></script>

<script type="text/javascript">

        function getDescription(id){
            var url = 'http://localhost/zendframework_smarty/index/description';
            var myAjax = new Ajax.Request
                         (
                             url,
                             {
                                 method: 'get', 
                                 parameters: 'albumId='+id, 
                                 onSuccess: renderResults
                             }
                         );
        }

        function renderResults(response){
            var renderDiv = document.getElementById('description');
            renderDiv.innerHTML = response.responseText;
        }
</script>
{/literal}

je soughaite afficher dans un div "description" la description que je vais chercher dans mon controller descriptionAction.

Voici la tête de mon action :

Code:

public function descriptionAction() {
        
        $albumId = $this->getRequest()->getParam('albumId');
        $this->view->id=$albumId;
        
        echo $this->view->render("index/description.tpl");
            
                
    }

Voici le code de mon template Smarty description.tpl :

Code:

Album : {$id}

Un exemple super simple qui marche nickel. Il suffit que je fasse maintenant une petite requete pour choper la description dans la table et l'afficher dans le Template. Un exemple simple qui marche bien.

a+ Frédéric

Dernière modification par frederic (13-09-2007 14:00:12)

Hors ligne

 

#9 13-09-2007 14:19:00

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: ZF et Ajax

Si ton but c'est de mettre a jours un DIV avec le résultat de ta requête Ajax, il y a plus simple a faire.

Code:

new Ajax.Updater('description', 'http://localhost/zendframework_smarty/index/description', {
  parameters: { 'albumId='+id },
  method:'get',
});

Par default, l'insertion est en update (remplace le contenu) mais tu peux modifier le comportement en ajoutant un parametre du type "insertion:Insertion.Top"

Hors ligne

 

#10 13-09-2007 14:58:27

frederic
Membre
Date d'inscription: 04-09-2007
Messages: 31

Re: ZF et Ajax

Salut Titerm, merci de ton conseil il a été utile.
a+ Frédéric

Hors ligne

 

#11 14-09-2007 09:36:19

frederic
Membre
Date d'inscription: 04-09-2007
Messages: 31

Re: ZF et Ajax

Salut,
quelqu'un a t-il déjà eu des problèmes avec Ajax.Updater sous IE6 ?
J'ai pour le moment une erreur sur la page.
a+ Frédéric

Hors ligne

 

#12 14-09-2007 13:50:15

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: ZF et Ajax

Non, aucun pb ni si ff, ni opera, ni  Ie 5, 6 ou 7

Hors ligne

 

#13 18-11-2007 18:03:40

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZF et Ajax

Oui il faut faire attention à ne pas confondre Ajax et Php...

Je ne parle pas pour toi fred, mais à mon grand étonnement, j'ai reçu au bureau il y a quelques jours, un "développeur" qui à "développé" un e-commerce.

Ce dernier, ma soutenu que "Ajax allait bientôt dépasser PHP" (cela n'a complétement rien a voir), que "Ajax apporté beaucoups en sécurité" (alors que les développeurs pro ont plus tendance à souligner les faiblesses niveau sécurité de cette méthode).

Il y a des fois oû je me pose vraiment des questions sur les compétences que certains veulent mettre en valeur...

(post hors-sujet, mais ca me fait plaisir de le souligner)

Hors ligne

 

#14 18-11-2007 19:37:30

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: ZF et Ajax

Ne pas oublier Mootools en framework javascript qui est aussi excellent.

Quand au fameux problème de sécurité ca me fait doucement rigoler car si le coté serveur est correctement codé je ne vois pas quelle faiblesse pourrait avoir une requete ajax par apport à une requete http normale, bref ...

Hors ligne

 

#15 18-11-2007 19:51:27

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: ZF et Ajax

J'ai déjà entendu parlé de quelques problèmes de sécurité, mais je ne saurais te les lister.

Bien entendu, si côté serveur ça ne suit pas...

Pour les frameworks, j'utilise protoype + script.aculo.us (en option).

J'ai tester RICO, et je te le déconseille vivement de par son manque d'extensibilité dans certains composants.

A tester aussi, le framework google (il me semble qui permet de lié js et java, je crois),
Yahoo a aussi fait quelque chose d'intéressant...

Sinon, il  y a aussi DOJO, qui lui est supporté par IBM.

En attendant avce impatience le socle commun AjaxHub qui sera en discussion lors d'un consortium Openajax qui regroupe des société comme yahoo, google, amazon... socle commun aux très nombreu framework ajax.

Dernière modification par Phoenix17 (18-11-2007 19:59:17)

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