Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-10-2014 12:04:53

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

[Résolu]Zf2 et JsonModel flashMessages

Bonjour,

J'ai remarqué en faisant de l'ajax, que les flashMessages dans la réponse json était retournés à la vue automatiquement, si l'on mettait dans le contrôleur

Code:

[lang=php]$this->flashMessenger()->setNamespace('success')->addMessage('tata');

on aurait une réponse de ce style

Code:

[lang=javascript]
{"success":1,"flashMessages":{"success":["tata"]}}

J'ai deux question à propos de ce comportement :

1 - Y a t'il une manière de traduire ces messages envoyés ? (J'ai pour l'instant pas réussi a les traduire)

2-  zf2 a t'il prévu quelque chose comme un helper de vue ajax pour afficher ces flashMessages automatiquement au bon endroit ? ou je dois les mettre dans des alert ou les attacher a une balise HTML ?


Merci pour vos réponses.

Dernière modification par JGreco (05-01-2015 14:17:23)


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#2 21-10-2014 16:11:57

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: [Résolu]Zf2 et JsonModel flashMessages

J'ai avancé un peu sur la solution..

1- pour la traduction j'ai trouvé une méthode.

2- Pour les flashs messages j'ai bataillé un peu et vu que mon ajax fait en success un windows.location.replace j'ai passé mon flash message en paramètre et avec mon controleur qui receptionne l'url je refait un

Code:

[lang=php]
$this->flashMessenger()->setNamespace('success')->addMessage('tata');

ou tata et success sont remplacés pr ce que me retourne

Code:

[lang=php]
$this->getRequest->getQuery()->get('Ma valeur');

C'est pas terrible comme solution du moins cela ne me plait pas... y a t'il une meilleure manière de faire, j'ai lu et relu pas mal de code zf2 et je suis tombé sur

Code:

[lang=php]
$container->setExpirationHops(1, null);

Mais même ceci qui m'avait fait espérer les plus belles choses m'a fait l'effet d'une douche froide.. fin bref..

Si quelqu'un peut m'aider..


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#3 12-11-2014 16:23:59

DDUC
Membre
Date d'inscription: 18-07-2014
Messages: 18

Re: [Résolu]Zf2 et JsonModel flashMessages

Slt JGreco,

Par rapport à ton problème, j'espère ne pas me tromper. Et si c'est le cas que l'on me corrige. Ok, je sais que les messages flash sont là pour résoudre le problème sur le rechargement des pages avec leurs variables. Imagine qu'un de tes formulaires à été valider ( pas à l'aide de AJAX ). Après le traitement des données, tu redirige l'utilisateur sur une page ou tu affiche un message lui informant du succès de l'opération, et pour faire plus propre à l'aide de Javascript, tu retire le nœud contenant le message du DOM. Subitement l'utilisateur recharge la page, et là, surprise, le message que t'avais retiré est de nouveau affiché. Alors c'est là qu'intervient les messages flash, ces messages ont la particularité de d'expirer (pour ne pas dire se détruire) après un laps de temps. Cela implique  que lors que l'utilisateur aura à recharger la page une nouvelle fois. notre message ne lui sera pas affiché, car la variable la contenant est morte.
En gros je veux tous simplement dire par là que si tu fais du AJAX, je ne trouve pas la nécessité d'utiliser des messages flash, car la page n'est pas recharger mais juste une partie d'elle. Je me dis que les variables de sessions font l'affaire avec AJAX. Mais voici le lien d'une page avec lequel j'ai fais mes débuts avec le ZF2:

http://zf2cheatsheet.com

Compte à ta traduction, tu es en présence d'un code JSON. Si je comprend bien tu aimerai récupérer les valeurs renvoyées. Prenons ton code comme exemple:

Code:

var data = {"success":1,"flashMessages":{"success":["tata"]}};

data["success"] va te renvoyée 1
data["flashMessages"] lui va te renvoyer un nouvel objet JSON

J'espère que cela pourra t'aider.

Hors ligne

 

#4 12-11-2014 22:59:22

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: [Résolu]Zf2 et JsonModel flashMessages

Dduc merci de ta réponse,

Parfois, les développements métiers sont étranges et pour le coup on doit adapter ce que nous donne le framework, les traductions ce n'est plus un problème j'ai trouvé la solution et ça marche correctement.

Pour les flash messages j'ai triché un peu en créant un Zend\Session\Container('AjaxMessage') et sur mes pages qui récupère ce contenu de session je crée mon flash message et je détruit ensuite le contenu de ce container. Un petit hack par ce que j'ai pas pu trouver plus propre mais ça marche niquel. Et le patron est content smile

Merci de ton aide  quand même.

Dernière modification par JGreco (12-11-2014 22:59:49)


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#5 14-11-2014 09:03:29

Splyf
Membre
Date d'inscription: 24-10-2013
Messages: 115

Re: [Résolu]Zf2 et JsonModel flashMessages

Salut,

j'arrive a peut tard dsl !
:

1 - Y a t'il une manière de traduire ces messages envoyés ? (J'ai pour l'instant pas réussi a les traduire)

Ce message un du JSON, comme la dit DDUC: c'est une chaine facilement "parsable" en javascript et optenir ainsi un objet manipulable.
Pour optenir l'objet donnée par DDUC a partir de la réponse, tu peut faire en jquery par exemple:

Code:

[lang=javascript]data = $.parseJson(jsonResponseString);

et en javascript pure

Code:

[lang=javascript]data = json.parse(jsonResponseString).

En suite pour afficher le message, zf2 ne peut rien prévoir pour nous malheureusement, car on est coté navigateur, et non serveur: c'est de l'ajax.
Autrement dit, tu ne pourra rien faire en php, il te faudra faire du js.
en jquery par exemple si tu a une div avec l'id "ajaxMessage" dans ta page:

Code:

[lang=javascript]
$('#ajaxMessage').text(data.flashMessages.success[0]);

- Pour les flashs messages j'ai bataillé un peu et vu que mon ajax fait en success un windows.location.replace j'ai passé mon flash message en paramètre et avec mon controleur qui receptionne l'url je refait un

Pourquoi un windows.location.replace? si je comprend bien tu change de page un cas de success? pourquoi ce compliquer avec du ajax dans ce cas si ? ^^

Dernière modification par Splyf (14-11-2014 09:05:19)

Hors ligne

 

#6 14-11-2014 10:03:15

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: [Résolu]Zf2 et JsonModel flashMessages

Bonjour,

merci de ta réponse Splyf.

Pourquoi un windows.location.replace? si je comprend bien tu change de page un cas de success? pourquoi ce compliquer avec du ajax dans ce cas si ? ^^

Pour une expérience utilisateur un peu plus agréable je fait de gros traitements, ils durent pas mal de temps (entre 10/15 secondes en local, donc en prod surement un peu plus) et je souhaite mettre un loader pour l'aider a patienter(ouais j'ai mit une pin-up qui danse et tout... <= joke), et pendant ce temps il peut toujours consulter de la data sur la page.

Dernière modification par JGreco (14-11-2014 10:03:30)


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

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