Tôi đã sử dụng cả plugin và ưu tiên trong hướng dẫn magento2 và cả hai đều hoạt động tốt nhưng sự khác biệt cơ bản giữa chúng là gì.
Mã cho plugin:
1.1) Thêm một khai báo plugin vào di.xml:
<type name="Magento\Catalog\Model\Product">
<plugin name="magento-catalog-product-plugin" type="Training\Test\Model\Product" sortOrder="10"/>
</type>
1.2) Tạo một lớp plugin:
<?php
namespace Training\Test\Model;
class Product {
public function afterGetPrice(\Magento\Catalog\Model\Product $product, $result) {
return 5;
}
}
Mã ưu tiên:
2.1) Tạo một tuyên bố ưu tiên:
<preference for="Magento\Catalog\Model\Product"
type="Training\Test\Model\Testproduct" />
2.2) Tạo một lớp sản phẩm mới:
<?php
namespace Training\Test\Model;
class Testproduct extends \Magento\Catalog\Model\Product
{
public function getPrice() {
return 3;
}
}