Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-11-2012 18:13:56

tagazok
Nouveau membre
Date d'inscription: 29-10-2012
Messages: 9

Appeler un plugin depuis un mapper

Bonjour,

Depuis que les helpers d'action ont disparu, c'est un peu la galère je trouve. Bref, je fais donc des plugins pour les replacer que j'arrive très bien à appeler depuis un controller en le renseignant dans le module.config.php.

Cependant, impossible d'appeler un plugin depuis un mapper.

Quelqu'un aurait une idée? Cela me semble quelque chose de pourtant très utile mais je n'arrive pas à mettre la main sur une méthode qui marche.

Merci

Dernière modification par tagazok (14-11-2012 08:47:21)

Hors ligne

 

#2 14-11-2012 10:05:01

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Appeler un plugin depuis un mapper

Salut Tagazok, normalement ta couche des mappers n'est pas censé avoir accès ni savoir ce qu'il se passe dans la couche contrôleur. Donc pour moi c'est normal que ton plugin ne fonctionne pas puisqu'il n'est visible que depuis les contrôleurs.

Si je ne dis pas de bêtises lorsque tu as 2 couches, la couches supérieur sait ce que doit retourner la couche inférieure mais la couche inférieure ne sait pas ce que fait la couche supérieure. Dans ce sens tu as les relations suivantes :
Vue (aide de vue et vues) > Contrôleur (plugins, contrôleurs forcément) > Service (code métier, appel base de données) > Couche DAO (mappers, définition des requêtes etc ...)

Donc pour moi tu as un problème de conception, ton mappers n'est pas censé faire de traitements c'est la couche service qui s'en charge et si tu as besoin de paramètres dans ton mappers depuis ton plugin, tu dois les passer du contrôleur vers le service qui lui même transmet au mappers.

Hors ligne

 

#3 14-11-2012 13:03:07

tagazok
Nouveau membre
Date d'inscription: 29-10-2012
Messages: 9

Re: Appeler un plugin depuis un mapper

Bonjour Orkin,
Merci de ta réponse.
Mon mapper ne fait pas vraiment de traitement.
Je voudrai me servir d'un plugin qui renvoi un prefix pour certains éléments.
Par exemple, dans ma base, disons que j'ai une table messages et une commentaires
Les identifiants de mes messages sont de type int ainsi que pour mes commentaires.
J'ai une table de relation qui par contre elle contient elem1 = MSG_id et elem2 = COM_id.

Tu vas me dire pourquoi ne pas mettre les id tout simplement dans ma table de relation? Tout simplement car je récupère ausis des elements de type DOC_id, EVENT_id, EMAIL_id pouvant être rattachés à mon message.

J'ai donc fait un plugin qui marchait en zf1 comme ça :
$monhelper->("message"); et qui me renvoyait "MSG_" (le prefix pour les messages), ceci afin de ne pas l'écrire en dur partout.

Comme il était possible à l'époque d'appeler les helpers dans le mapper, cela marchait. Changer mon modèle de donner maintenant serait un petit peu compliqué.
Existe-t-il un méthode simple de faire ce que je veux?

Merci

Hors ligne

 

#4 14-11-2012 14:01:25

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Appeler un plugin depuis un mapper

Je vois, tu peux éventuellement le mettre dans le module.config.php et ensuite faire une factory qui va renseigner le préfixe dans un attribut de ta classe mapper. Ca te fait ré-écrire un peu de code mais je vois pas d'autre solution.

Hors ligne

 

#5 15-11-2012 10:04:50

tagazok
Nouveau membre
Date d'inscription: 29-10-2012
Messages: 9

Re: Appeler un plugin depuis un mapper

Hum, merci Orkin.
Finalement je me suis débrouillé avec un plugin qui contient les constantes et qui renvoi la bonne valeur. Je passe un tableau de ces constantes à mon mapper.
Ca marche bien smile

Merci

Hors ligne

 

#6 19-11-2012 10:55:22

tagazok
Nouveau membre
Date d'inscription: 29-10-2012
Messages: 9

Re: Appeler un plugin depuis un mapper

Hum, par contre, dans le même ordre d'idée de problème, j'arrive à appeler un plugin depuis n'importe quel controller d'un autre module. Par contre, impossible d'appeler (de la même manière) un plugin depuis un plugin

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