Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-05-2008 10:08:04

Fred
Nouveau membre
Date d'inscription: 29-04-2008
Messages: 8

[ZF-1.5]Probleme liens ajax

Bonjour,
Je viens poser ma question ici parce que après avoir cherché sur internet je n'ai apparemment pas trouvé de personnes avec le même problème que moi... je vous explique :

Je développe un site en PHP avec le Zend Framework .Il est fait de façon a ce que tout marche sans JavaScript.
Maintenant que j'ai fini la partie "fonctionnement" du site je voulais ajouter des petites animations en ajax, en plus pour le confort.

Voici le principe : je récupère mon lien en parcourant tout ma page avec le JS , j'y ajoute un paramètre "ajax" que je met a "true" et du coup dans mon contrôleur et mes vues je réagis en fonction ( affichage ou non de certains éléments ) .

Mon problème est lorsque je veux changer un lien dynamique , le lien est envoyé a la vue depuis le contrôleur et concaténé dans la vue dans un href . Or la ou ça bug c'est que le JS n'arrive pas a récupérer ce que contient le lien ... (je précise que lorsque le liens est écrit directement dans la vue j'arrive sans problème a l'attraper..).

Voici mes codes :

Code:

//action transmise a la vue dans le contrôleur 
...
$this->view->action = "/utilisateur/supprimermessage/idmessage/";
...

Code:

//Partie de la vue ou est utilisée l'action pour construire le lien
...
<a href="<?php echo $this->baseUrl().$this->action.$this->id; ?>" class="oui">Oui</a>
<a href="<?php echo $_SERVER['HTTP_REFERER']; ?>" class="non">Non</a>
...

Code:

//Code JavaScript ( j'utilise la bibliotheque Mootools )
...
var lien = $$('a.oui');
var nl = lien.href + temp;
lien.setProperty('href',nl);
...

Merci d'avance
+ Fred

Hors ligne

 

#2 13-05-2008 09:32:27

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

Re: [ZF-1.5]Probleme liens ajax

Voici le principe : je récupère mon lien en parcourant tout ma page avec le JS , j'y ajoute un paramètre "ajax" que je met a "true" et du coup dans mon contrôleur et mes vues je réagis en fonction ( affichage ou non de certains éléments ) .

Tu n'as pas besoin de t'embeter avec des bidouilles comme ça.
En effet, Zend_Controller_Request possède une méthode pour déterminé si une requête est de type ajax ou non. Ainsi dans ton controller, tu peux faire $this->_request->isXmlHttpRequest() qui te renverra true  dans le cas d'une requête ajax (marche avec prototype, dojo, et jquery, à voir pour mootools). Il existe encore mieux avec le action helper AjaxContent.

Sinon pour générer tes urls, regardes du côté tu view helper url (à la fin de la liste des aides initiales)...

Après si ton problème est purement javascript, ce n'est pas sur ce forum que tu trouveras de l'aide...

Hors ligne

 

#3 13-05-2008 10:58:22

Fred
Nouveau membre
Date d'inscription: 29-04-2008
Messages: 8

Re: [ZF-1.5]Probleme liens ajax

Merci de ta réponse Mr.MoOx .
J'ai fais quelques essais avec les view helper url mais d'une ça ne me convient pas tout a fait au niveau du lien généré et d'autre part je n'ai pas très bien compris la doc sur le AjaxContent ..

En tout cas je vais regarder plus précisément du coté du JavaScript et si je trouve la réponse je vous la posterais pour ceux qui passeront par ici plus tard.

+Fred

Hors ligne

 

#4 13-05-2008 12:25:00

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [ZF-1.5]Probleme liens ajax

Bonjour
Si j'ai bien compris Fred, il fait d'abord tout son site sans penser à Ajax, proprement côté serveur, fonctionnant sans javascript, et après il veut ajouter Ajax au niveau de ses pages pour le rendre plus dynamique, joli, etc.
C'est bien ça?

Donc il n'utilise pas de requetes faites directement depuis Ajax, ou si?

Je commence un back-office et je pensais travailler comme Fred; mais que me conseilles-tu?

Merci

Hors ligne

 

#5 13-05-2008 12:33:50

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

Re: [ZF-1.5]Probleme liens ajax

Perso je travaille exactement de la même manière.
Je fais mon site en PHP only et après je pense au JS qui est un plus.

Par contre pour un backoffice c'est autre chose car cette partie n'est pas forcément accéssible par pleins de gens. Tu peux donc imposer des contraintes plus fortes (javascript obligatoire, tel ou tel navigateur, etc...)
A toi de voir (avec ton client smile )

Hors ligne

 

#6 13-05-2008 12:53:24

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [ZF-1.5]Probleme liens ajax

D'accord et merci!!!! smile

Alors je ne comprends pas bien le souci de Fred et puis est-ce que tes conseils donnés (à Fred) concernent la façon dont tu travailles et donc celle que je me prépare à faire?

En sachant que je vais utiliser Protoype et Scriptaculous. Je ne sais pas si ceci change quelque chose à l'affaire.

Merci de ton conseil car je ne voudrais pas me lancer aveuglement sans avoir avant analyser la meilleure façon de faire.

merci encore

Hors ligne

 

#7 13-05-2008 13:36:31

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

Re: [ZF-1.5]Probleme liens ajax

Alors je ne comprends pas bien le souci de Fred

Ben en fait moi non plus, mais je suppose que c'est purement javascript...

est-ce que tes conseils donnés (à Fred) concernent la façon dont tu travailles et donc celle que je me prépare à faire?

Pour le helper url c'est valable pour tout le monde (pourquoi se privé d'un générateur d'url? si on change les routes, les urls changent automatiquement sur tout le site!!!)
Pour l'ajax, c'est aussi valable par rapport à la méthode "PHP puis JS".

En gros avec un snippet de code:

PHP only

Code:

public function maAction() {
    $resultatNormal = $objet->methode();
}

PHP revu pour JS (si traitement différent sinon cf AjaxContent

Code:

public function maAction() {
    if ($this->_request->isXmlHttpRequest()) {
        //.. d'autre truc
    } else {
        $resultatNormal = $objet->methode();
    }
    //...
}

Franchement pour avoir utiliser l'AjaxContent et la sérialisation JSON automatique des variables de vue, je vous conseille de regarder ça de près, ç fait gagner un temps précieux big_smile

Hors ligne

 

#8 13-05-2008 14:25:06

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [ZF-1.5]Probleme liens ajax

je te remercie énormément; je vais regarder tout ceci de près!!! smile

Hors ligne

 

#9 13-05-2008 15:05:35

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [ZF-1.5]Probleme liens ajax

Sinon pour générer tes urls, regardes du côté tu view helper url (à la fin de la liste des aides initiales)...

si je comprends ... pas sûr.... smile, ceci permet de gérer une action qui disons vient s'ajouter.... par exemple une venant d'Ajax??

Comme pour Fred (où es tu ?), le helper de zend n'est pas encore clair pour moi....

Hors ligne

 

#10 13-05-2008 15:35:35

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

Re: [ZF-1.5]Probleme liens ajax

Hello,

Le helper Url te sert à générer la chaîne de caractère correspondant à l'url. La génération est basé sur l'url actuel de ta page (fonctionnement par défaut).

Exemple : tu es dans le module toto, dans le contrôleur tata et dans l'action titi, en plus un de tes paramètres d'url est tutu=1. Tu utilise le router par défaut (rewrite). Ton adresse est donc : http://monsite/toto/tata/titi/tutu/1

Code:

// dans ce cas
echo $this->url(array('action'=>'tyty')); // affiche http://monsite/toto/tata/tyty/tutu/1
// par contre
echo $this->url(array('action'=>'tyty'), null true); // affiche http://monsite/default/index/tyty à cause du true en 3ème
// tu peux aussi faire
echo $this->url(array('action'=>'tyty', 'module'=>'commun', 'test'=>123)); // affiche http://monsite/commun/tata/tyty/tutu/1/test/123

C'est plus clair ?

A+


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

Hors ligne

 

#11 13-05-2008 15:54:42

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [ZF-1.5]Probleme liens ajax

oui, c'est plus clair mais donc Ajax ici comment peut-il rentrer dans cette structure? Une nouvelle action?, un nouveau module? Simplement une nouvelle key/valeur?
je ne vois pas trop encore.... désolée....smile

Hors ligne

 

#12 13-05-2008 16:13:51

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

Re: [ZF-1.5]Probleme liens ajax

Hello,

Pas de problème, on est là pour apprendre. Dans mon cas, j'ai un contrôleur Ajax dans chaque module où il est nécessaire, ce contrôleur ne retourne que du JSON.

Je travaille avec jQuery.

Par exemple, j'ai un input avec un id=toto en fin d'un formulaire.

Code:

$('#toto').click(function(){
    var serial = $('#formulaire').formSerialize();
    $.ajax({ type: "POST",
        url: "<?=$this->url(array('controller' => 'ajax' , 'action' => 'modifie'))?>",
           data: serial,
           success: function(result){
                  result=result.parseJSON();
                  alert(result[0]);
           }
    });
});

C'est vrai qu'il faut connaître jQuery, mais ce que je veux montrer c'est l'url inclus dans le JS. Quand je clique sur mon input, je crée une requête Ajax qui interroge la page http://monsite/default/ajax/modifie. Cette page retourne des infos au format JSON. Je les traite via result.parseJSON(); et j'affiche alert(result[0]);. Tout ceci sans recharger la page.

A+

Dernière modification par mikaelkael (13-05-2008 16:14:28)


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

Hors ligne

 

#13 13-05-2008 16:31:30

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [ZF-1.5]Probleme liens ajax

Ah, d'acc je commence à comprendre et même si je n'utilise pas jQuery ton exemple m'aide à comprendre la liaison entre ajax et Zend.
Dans mon cas ce sera depuis Prototype/Scriptaculous et puis un contrôler Ajax: Ceci me paraît propre comme idée donc cela me permet de faire comme j'avais pensé c'est à dire faire mon site d'abord seulement en Zend sans javascript et puis ajouter les requêtes Ajax là où c'est nécessaire!

Merci, je vais étudier en profondeur le AjaxContext et les helpers..

merci à tous!!!! smile

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