Question

L'interception est-elle censée être la méthode préférée lorsqu'il s'agit de modifier le comportement d'une méthode originale dans Magento2 comme l'étaient les observateurs dans magento1 ?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception
Était-ce utile?

La solution

Je ne pense pas que l'interception soit destinée à remplacer les observateurs d'événements.
Il y a encore des événements distribués dans le code Magento2.

Les intercepteurs ne sont qu'un moyen de traiter l'entrée ou la sortie d'une méthode.
Ou le comportement d'une méthode (en utilisant le around intercepteur) mais d'après ce que j'ai compris, c'est une approche risquée.

Je pense que c'est plutôt un moyen d'éviter autant que possible les réécritures de classes.
Dans Magento 1.x, si vous deviez modifier le résultat d'une méthode, vous deviez remplacer la classe qui la contient et la méthode elle-même.
maintenant vous pouvez simplement utiliser before, after ou around intercepteurs pour manipuler les données.

Avec les observateurs, vous pouvez manipuler les données dans certains points fixes d'une méthode, et non dans la méthode complète elle-même.

À mon avis, utiliser des observateurs lorsque cela est possible reste la meilleure approche pour personnaliser, même dans Magento 2.

Autres conseils

L'interception est l'évolution des événements.Son objectif est de permettre à un développeur d'écrire son code sans réfléchir à des points d'extension.

Avec des événements, vous devez penser à des endroits où vous faites des mages :: Dispatchervent () Pour que votre module soit personnalisable.

Interception vous permet de ne pas y penser.Vous venez d'écrire votre logique professionnelle.Chaque appel est un événement.Donc, si vous écrivez votre code de manière adaptée à l'objet, il sera entièrement personnalisable par la conception.

Mais les événements fournissent un service de niveau supérieur fournissent une interface qui parle la langue d'activité.Donc, les événements resteront à Magento 2.

Actuellement, il existe toujours la possibilité d'écouter des événements spécifiques et je suggérerais que les intercepteurs ne remplacent que les réécritures.J'utiliserais toujours les événements lorsqu'il y en a un en place pour vos besoins.

Si vous regardez la version actuelle, certains modules ont events.xml fichiers qui incluent les définitions.

<event name="cms_wysiwyg_images_static_urls_allowed">
    <observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer"  />
</event>
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top