Beim Durchsuchen des Codes des Moduls von magento 2.0.7 catalogrulesstieß ich auf eine Klasse Magento\CatalogRule\Model\Product\PriceModifier, die Magento\Catalog\Model\Product\PriceModifier\Compositeals Argument über di.xmldas catalogrulesModul an class übergeben wurde .
Jetzt PriceModifierhat das eine Methode namens, modifyPricedie den vorhandenen Preis des Produkts übernimmt und mithilfe eines eigenen Mechanismus ändert und den neuen Preis zurückgibt.
Ich habe versucht, diese Funktionalität zu testen, um zu überprüfen, ob sie funktioniert, indem ich dasselbe in meinem benutzerdefinierten Modul nachahmte, aber die Methode wird nicht aufgerufen.
Ich versuchte mich tiefer damit zu beschäftigen und mir das anzuschauen Magento\Catalog\Model\Product\PriceModifier\Composite
<?php
/**
* Composite price modifier can be used.
* Any module can add its price modifier to extend price modification from other modules.
*
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Catalog\Model\Product\PriceModifier;
use Magento\Catalog\Model\Product;
use Magento\Catalog\Model\Product\PriceModifierInterface;
use Magento\Framework\ObjectManagerInterface;
class Composite implements PriceModifierInterface
{
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $objectManager;
/**
* @var array
*/
protected $modifiers;
/**
* @param ObjectManagerInterface $objectManager
* @param array $modifiers
*/
public function __construct(ObjectManagerInterface $objectManager, array $modifiers = [])
{
$this->objectManager = $objectManager;
$this->modifiers = $modifiers;
}
/**
* Modify price
*
* @param mixed $price
* @param Product $product
* @return mixed
*/
public function modifyPrice($price, Product $product)
{
foreach ($this->modifiers as $modifierClass) {
$price = $this->objectManager->get($modifierClass)->modifyPrice($price, $product);
}
return $price;
}
}
Wie wir sehen können, modifyPricedurchlaufen die Schleifen alle Modifikatoren und rufen ihre jeweilige modifyPriceMethode auf und geben den modifizierten Preis zurück.
Aber die Methode wird von keinem Ort aus aufgerufen. Ich muss wissen, ob dieser Code von irgendwoher verwendet wird oder ob es sich nur um einen nicht verwendeten Code handelt. Und falls es nicht verwendet wird, haben wir einen alternativen Mechanismus, um den Preis des Produkts mit einem ähnlichen Ansatz zu ändern? Jeder Vorschlag wird geschätzt.