Développer avec RBS Change : [Résolu] Etendre le service catalog_ReferencingService
-
28/09/2012 13:32
Bonjour,
je souhaite ajouter dans les metas associées à un produit, les propriétés spécifiques dont j'ai injecté le produit.
pour cela, j'ai procédé comme suit :
- identifier la méthode qui gère les metas pour un produit :catalog_ReferencingService::getMetaSubstitutionsForProduct($product)
- le service ReferencingService n'est pas lié à un persistentdocument donc via la console :change.php add-service <monmodule> Referencing
- dans <monModule>_referencingServices j'étends le service du module catalog :class <monModule>_ReferencingService extends catalog_ReferencingService
- j'ai ensuite recoder intégralement la méthode getMetaSubstitutionsForProduct($product) en y ajoutant les metas que je souhaite pouvoir utiliser au sein de ma page.
- j'ai ajouté un log dans les 2 services au sein de la methode getMetaSubstitutionsForProduct :Framework::fatal('###'.__METHOD__.'myMetas= '.var_export($myMetas,true));
- j'ai ensuite fait un update-autoload et un clear-all;compile-all, juste histoire d'être sûr
RESULTAT :
C'est toujours la methode du service catalog qui est utilisée et non celle de <monMondule>
C'est comme ça que je fais pour les injections de document et ça marche très bien. Ici c'est légèrement différent vu que j'injecte un service non lié à un document, mais je m'attendais à ce que ça marche de la même façon...
ai-je oublié une étape ?
Merci !
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Bonjour,
Dans le cas d'une injection de document, l'injection du service est implicite et se fait sans déclaration supplémentaire du fait que le document est injecté.
Si vous voulez injecter un autre service il faut par contre le déclarer explicitement dans votre fichier project.xml. Par exemple, le module mysqlnotif ajoute une injection du service notification_NotificationService par mysqlnotif_InjectedNotificationService via la déclaration suivante dans la section project/config/injection :<entry name="notification_NotificationService">mysqlnotif_InjectedNotificationService</entry>
Édité par Gaël Port 28/09/2012 14:03
-
of course...
merci !
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7
Merci de prendre connaissance et de respecter les règles des forums.