Magento 2: Chọn cơ chế mở rộng nào?


9

Chúng tôi có thể mở rộng bộ điều khiển theo hai cách: sử dụng ưu tiên và sử dụng plugin. Nhưng tôi không hiểu rằng, cái nào là tốt và ưu điểm / nhược điểm của ưu tiên so với 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>

Bản sao có thể có của Magento 2: Plugin vs Observer
7ochem

Câu trả lời:


11

Sử dụng plugin bất cứ khi nào có thể, sau đó là người quan sát (xem ưu và nhược điểm của từng loại ), điều này sẽ cho phép bạn tránh xung đột với các tiện ích mở rộng khác (mô-đun của bên thứ 3).

Chỉ nên sử dụng ưu tiên nếu toàn bộ lớp thực hiện / giao diện lõi được thay thế bằng tùy chỉnh. Hãy xem xét rằng chỉ có một ưu tiên được kích hoạt bất cứ lúc nào (mà một ưu tiên, được xác định theo trình tự được xác định trong module.xml), vì vậy nếu một tiện ích mở rộng khác xác định ưu tiên cho cùng một lớp / giao diện, sẽ có xung đột (các tiện ích mở rộng này không thể hoạt động cùng nhau).


4
  • Nếu chức năng của bạn thay thế hoàn toàn chức năng cốt lõi thì bạn có thể sử dụng tùy chọn.
  • Nếu bạn muốn thêm chức năng vào cơ sở hoặc thay thế một phần phương thức lớp thì vui lòng sử dụng bổ trợ.

1
Có vẻ thận trọng cần lưu ý rằng nếu bạn thay thế chức năng cốt lõi thì bạn phải theo dõi các cập nhật cốt lõi và đảm bảo các mô-đun tùy chỉnh của bạn được cập nhật
Robbie Averill

1

adostional infos: hầu hết tất cả các ưu tiên được sử dụng trong intern m2, nó chỉ để giữ mối quan hệ giữa lớp bê tông cơ sở và giao diện, như:

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

như bạn nghĩ nó đã được sử dụng một lần tôi nghĩ:

<preference for="Magento\ImportExport\Controller\Adminhtml\Export\GetFilter" type="Magento\AdvancedPricingImportExport\Controller\Adminhtml\Export\GetFilter" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.