Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Dans mon controller, je créé une fonction ajouter (qui permet dajouter 2 variable dans un tableau en session), dans une vue lorsuqe je fais appel a cette fonction, je ne veux pas que cette action soit associé a une vue. Je veux que lorsque je clique sur le lien pour ajouter, il ne se "passe rien" au niveau visuel, juste que l'action s'effectu
Hors ligne
Ajouteca dans ton action
$this->_helper->viewRenderer->setNoRender();
Hors ligne
c'a m'emmène quand meme à l'adresse du lien, avec une page blanche, il ne charge pas la vue
<a href="/gestion/ajouter?id=1&intitule=hello" > Ajouter </a>
quand je clique sur ajouter, avec ce que tu m'a donné, car me rend sur mon-site.fr/gestion/ajouter?id=1&intitule=hello, et c'est une page blanche
Dernière modification par leroidje (24-07-2007 10:55:26)
Hors ligne
bah un lien ca emene toujours vers le lien... Ca, c'est au niveau html. Après tu as plusieurs facon de contourner ce pb... Soit tu met une iframe bidon en target, soit tu fais de l'ajax, etc...
Hors ligne
ca marcherai de faire une fonction javascript qui appelle le code php ?
Hors ligne
le javascript appel une ressource sur le serveur web, la techno qui est deriere le fichier n'a aucune importance.
ca peut etre apache dans le cas d'une image ou d'une ressource static comme les css ou js ou meme du html simple.
Ca peut etre php ou n'importe quelle langage qui sera executé par le serveur web pour servir n'importe quelle type de réponse, de l'image, du json, du html, du js ou du css.
Hors ligne
peux tu m'aider car je ne connais pas beaucoup le javascript...stp ?
Je suis perdu, car j'ai fait une class gestion (avec un constructeur, une fonction ajouter et une supprimer), ensuite dans un controlleur, j'ai une fonction ajouter(qui récupere les valeur GET, qui créé une instance de gestion et qui fait la fonction add). Et dans une vue d'un autre controlleur, je fais un lien en passant les valeur en get pour l'action du controlleur
Dernière modification par leroidje (24-07-2007 11:41:18)
Hors ligne
Si tu ne connais pas le javascript, c'est le moment de t'y mettre .
Maintenant, faire du ajax pour ca, meme si ajax est a la mode, je trouve que c'est un peu superflu.
essai de faire kk chose comme ca.
<iframe name="bidon" style='display:none'></iframe> // iframe de nom bidon et non affichée <a href="lelienverstapage.php" target="bidon"> // Un lien dont le résultat est affiché dans la iframe de non bidon (et donc pas visible)
ca fera la meme chose et c'est beaucoup plus simple.
Dernière modification par TiTerm (24-07-2007 11:45:10)
Hors ligne
Merci c'est exactement ce que je voulais!!!
Et comme tu dis je vais me plonger dans js et ajax car je suis vraiment trop debutant la dedans
Hors ligne
J'ai une autre question, quand j'affiche le contenu de la variable $_SESSION['gestion'], j'ai fais un lien (de la meme manière que tout à l'heure), mais pour cette fois vider le tableau.
Le probleme c'est que pour voir le changement, il faut actualiser la page, ce qui est un peu embetant, comment faire pour que voir directement le resultat ?
lien pour vider
<iframe name="supprimer" style='display:none'></iframe> <a href="<?php echo $this->baseUrl; ?>/gestion/effacer" target="supprimer" > Vider </a>
action du controlleur
function effacerAction() { $gestion = new Gestion; $gestion->removeAll(); }
fonction remove
function removeAll() { unset($_SESSION['gestion']); }
Dernière modification par leroidje (24-07-2007 17:26:13)
Hors ligne
Déjà, une seule iframe en display none pour ta page, puisque de tte facon, ce que tu met vers cette iframe ne doit pas s'afficher.
Ensuite, si tu ne veux pas afficher kk chose, tu pointes sur cette iframe via target, si tu veux afficher kk chose, ne ne met pas de target.
Dans ton cas, gestion/effacer doit afficher le resultat, mais ce n'est pas cette fonction qui affiche le contenu de ta page si j'ai bien compris. ton controller/action gestion/effacer ne fait que du traitement.
Dans ce cas, il faut dire a cette action qu'après avoir effacer la session, il faut réafficher la page
function effacerAction() { $gestion = new Gestion(); $gestion->removeAll(); $this->_forward('tonActionQuiAffcheLaPage', 'LeControllerQuiContientLactionQuiAfficheLaPage'); // si c'est le meme controller que le courant, il n'est pas utile de le spécifier }
Bien entendu, il ne faut plus mettre dans le lien la target vers le iframe pour l'action /gestion/effacer
Dernière modification par TiTerm (24-07-2007 18:05:39)
Hors ligne
PS : pourquoi ne pas mettre un $this->_redirect vers la page appelante ca te mettre de ne pas avoir de iframe, je trouve que l'iframe est une plus une rustine dans ton cas.
En gros, ca fera :
ta page appelante
-> ton action sans vue
-> ta page appelante.
Il suffit de garder en mémoire l'url de ta page appelante, je trouve cela plus propre mais bon c'est que mon av is
Hors ligne
Merci pour vos réponses, les 2 fonctionnent sans les iframe
Hors ligne
J'avais cru comprendre que tu ne souhaitais pas recharger la page, mais apparement, non. Du coup, effectivement, c'est plus simple sans iframe.
Hors ligne