Nous pouvons étendre le contrôleur de deux manières: en utilisant les préférences et en utilisant le plugin. Mais je ne comprends pas cela, lequel est bon et les avantages / inconvénients de préférence par rapport au plugin.
<preference for="Magento\Checkout\Controller\Index\Index" type="mymodule\Helloworld\Controller\Index\Index" />
<type name="Magento\Catalog\Model\Product">
<plugin name="getname-test-module" type="mymodule\Helloworld\Model\Plugin\Product" sortOrder="10"/>
</type>
module
magento2
event-observer
plugin
Anand Ontigeri
la source
la source
Réponses:
Utilisez des plugins dans la mesure du possible, puis des observateurs (voir les avantages et les inconvénients de chacun ), cela vous permettra d'éviter les conflits avec d'autres extensions (modules tiers).
La préférence ne doit être utilisée que si l'ensemble de l'implémentation de classe / interface de base doit être remplacé par une implémentation personnalisée. Tenez compte du fait qu'une seule préférence est active à la fois (laquelle est définie par la séquence définie dans
module.xml
), donc si une autre extension définit une préférence pour la même classe / interface, il y aura un conflit (ces extensions ne peuvent pas fonctionner ensemble).la source
la source
infos supplémentaires: presque toutes les préférences utilisées dans le m2 interne c'est juste pour garder la relation entre la classe de béton de base et l'interface, comme:
comme vous le faites, il est utilisé une fois, je pense:
la source