#compilation #magento2
#Сборник #magento2
Вопрос:
У нас есть пользовательское расширение, которое работало над расширением пользовательского PDF-счета mageplaza в magento 2.2.7.
Модуль mageplaza необходимо было обновить, что мы и сделали. Теперь обновленный модуль несовместим с другим расширением, которое исправляет расположение атрибутов magento2 в накладной…
Итак, два расширения, которые должны работать вместе::
- Накладная FrikandelX
- Mageplaza/Pdfinvoice
К сожалению, когда мы компилировали код magento, он выдает эту ошибку:
Ошибки во время компиляции: FrikandelX Invoice Block InvoiceItems
Несовместимый тип аргумента: Требуемый тип: Mageplaza PdfInvoice Helper Data. Фактический тип: массив; Файл:
/xx/Xx/mage227-dev/app/code/FrikandelX/Invoice/Block/Invoice/Items.php
Общее количество ошибок: 1
Это файл FrikandelX:
/public_html/app/code/FrikandelX/Invoice/Block/Invoice/Items.php
используйте Magento Framework View Element Template Context; используйте MagentoTax Helper Data;
класс Items расширяет MageplazaPdfInvoiceBlockInvoiceItems{ защищенный $_productRepository;
public function __construct(
Context $context,
Data $taxHelper,
MagentoCatalogApiProductRepositoryInterface $productRepository,
array $data = []
)
{
parent::__construct($context, $taxHelper, $data);
$this->_productRepository = $productRepository;
}
public function getProduct($sku)
{
try {
$product = $this->_productRepository->get($sku);
} catch (Exception $e) {
return false;
}
return $product;
}
private function _getProduct($sku)
{
try {
$product = $this->_productRepository->get($sku);
} catch (Exception $e) {
var_dump($sku);
exit($e->getMessage());
}
die;
}
public function getDiscount($item, $product, $invoice)
{
if($item->getPrice() == $product->getPrice()){
$discountAmount = $item->getDiscountAmount();
if($discountAmount){
$rowTotalDiscounted = $item->getRowTotal() - $discountAmount;
$rowTotal = $product->getPrice() * $item->getQty();
$item->setRowTotal($rowTotalDiscounted);
$invoice->setSubTotal($invoice->getSubTotal() - $rowTotal $rowTotalDiscounted);
$invoice->setDiscountAmount(null);
return 100 - round($rowTotalDiscounted / $rowTotal * 100, 0);
}
return '0';
}
return 100 - round($item->getPrice() / $product->getPrice() * 100, 0);
}
}
Любая помощь будет высоко оценена. Надеюсь, я объяснил это ясно и большое вам спасибо за вашу помощь!
Ответ №1:
Иногда это происходит, когда используемая вами среда IDE автоматически импортирует классы или интерфейсы, на которые ссылается код, например $data
.
В этом случае параметр Data $taxHelper
, который вводится в конструктор, имеет неправильный тип в соответствии use
с инструкцией you:
use MagentoTaxHelperData;
Поэтому вам нужно убедиться, что Data $taxHelper
параметр действительно содержит данные типа:
MageplazaPdfInvoiceHelperData
Надеюсь, это поможет.