Magento 2: Переопределение ценовой модели с помощью плагина
Мне нужно переопределить Price.php Модель с плагином. Я создал PricePlugin в папке плагинов.
<vendor>/<module>/Plugin/Product/View/Options/PricePlugin.php
PricePlugin.php :
<?php
namespace <vendor>\<module>\Plugin\Product\View\Options;
use \Magento\Catalog\Model\Config\Source\Product\Options\Price;
/**
* Class AbstractOptions
* @package <vendor>\<module>\Plugin\Product\View\Options
*/
class PricePlugin
{
const VALUE_FIXED = 'fixed';
const VALUE_PERCENT = 'percent';
/**
* @param Price $price
* @return array
*/
public function toOptionArray(Price $price)
{
return [
['value' => self::VALUE_FIXED, 'label' => __('Fixed')],
['value' => self::VALUE_FIXED, 'label' => __('Per Character')],
['value' => self::VALUE_PERCENT, 'label' => __('Percent')],
];
}
}
Di.xml
<type name="Magento\Catalog\Model\Config\Source\Product\Options\Price">
<plugin name="VENDOR_MODULE_Model_Price" type="<Vendor>\<Module>\Plugin\Product\View\Options\PricePlugin" sortOrder="1" />
</type>
2
1 answers
Вы почти на месте, плагины можно использовать тремя способами: после, до и вокруг. Вам просто нужно предварительно добавить любой из этих трех методов к методу, который вы хотите изменить.
Так что меняйся
Tooptionarray(Цена $цена)
До
Последующий запрос (Цена $цена)
Также вы можете манипулировать результатом с помощью переопределяемого метода, как вы это сделали, например
public function aftertoOptionArray(Price $price)
{
return [
['value' => self::VALUE_FIXED, 'label' => __('Fixed')],
['value' => self::VALUE_FIXED, 'label' => __('Per Character')],
['value' => self::VALUE_PERCENT, 'label' => __('Percent')],
];
}
Вы можете изменить его на
public function aftertoOptionArray(Price $price, $OptionsArray)
{
// $OptionsArray here holds the values from the method toOptionArray() so you can simply add your value here which is ['value' => self::VALUE_FIXED, 'label' => __('Per Character')] into that array .
}
Надеюсь, это поможет
4
Author: Rahul Makwana, 2018-09-12 10:12:10