Мы можем расширить контроллер двумя способами: используя настройки и используя плагин. Но я не понимаю, что является хорошим и преимущества / недостатки предпочтения по сравнению с плагином.
<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
Ананд Онтигери
источник
источник
Ответы:
По возможности используйте плагины, а затем наблюдателей (см. Плюсы и минусы каждого ), это позволит вам избежать конфликтов с другими расширениями (сторонними модулями).
Предпочтение следует использовать, только если вся базовая реализация класса / интерфейса должна быть заменена пользовательской. Учтите, что в любое время активен только один параметр (который определен последовательностью, определенной в
module.xml
), поэтому, если другое расширение определяет предпочтение для того же класса / интерфейса, возникнет конфликт (эти расширения не могут работать вместе).источник
источник
дополнительная информация: почти все предпочтения, используемые в intern m2, предназначены только для поддержания связи между базовым классом бетона и интерфейсом, например:
как вы думаете, он используется один раз, я думаю:
источник