Magento 2: Hangi uzatma mekanizması seçilmeli?


9

Denetleyiciyi iki şekilde genişletebiliriz: tercih kullanma ve eklenti kullanma. Ama hangisinin iyi olduğunu ve tercihin eklentiye karşı avantajları / dezavantajları olduğunu anlamıyorum.

<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>

Yanıtlar:


11

Mümkün olduğunda eklentileri kullanın, ardından gözlemciler ( her birinin artılarını ve eksilerini görün ), bu diğer uzantılarla (3. taraf modülleri) çakışmaları önlemenizi sağlar.

Tercih yalnızca çekirdek sınıf / arabirim uygulamasının tamamı özel olanla değiştirilirse kullanılmalıdır. Herhangi bir anda yalnızca bir tercihin etkin olduğunu (hangisinin tanımlanmış sekansla tanımlandığını module.xml) dikkate alın, bu nedenle başka bir uzantı aynı sınıf / arayüz için tercihi tanımlarsa, bir çakışma olacaktır (bu uzantılar birlikte çalışamaz).


4
  • Eğer işlevselliğiniz temel işlevselliğin yerini tamamen alıyorsa tercihleri ​​kullanabilirsiniz.
  • Tabana işlevsellik eklemek veya bazı sınıf yöntemlerini kısmen değiştirmek istiyorsanız, lütfen eklentileri kullanın.

1
Çekirdek işlevselliği değiştirirseniz, temel güncellemeleri izlemek ve özel modüllerinizin güncel olmasını sağlamak için yükün üzerinizde olduğunu belirtmek ihtiyatlı görünüyor
Robbie Averill

1

aditional infos: intern m2'de kullanılan hemen hemen tüm tercihler, sadece temel beton sınıfı ve arayüz arasındaki ilişkiyi korumak içindir, örneğin:

<preference for="Magento\Store\Model\StoreManagerInterface" type="Magento\Store\Model\StoreManager" />

sen durumda olarak düşünüyorum bir kez kullanılır:

<preference for="Magento\ImportExport\Controller\Adminhtml\Export\GetFilter" type="Magento\AdvancedPricingImportExport\Controller\Adminhtml\Export\GetFilter" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.