Magento 2.3.1 Несовместимый тип аргумента


У меня проблема с компиляцией по таможенному расширению:

Imaginationmedia\Социальный заказ\Пользовательский интерфейс\Поставщик данных\Продажи\Заказ\Пожертвование\Поставщик данных Несовместимый тип аргумента: Требуемый тип: строка. Фактический тип: \Imaginationmedia\Социальный заказ\Пользовательский интерфейс\Поставщик данных\Продажи\Заказ\Пожертвование\имя; Файл: /var/www/html/app/code/ImaginationMedia/SocialOrder/Ui/DataProvider/Sales/Order/Donation/DataProvider.php

Общее количество ошибок: 1

В Log.php строка 92: Ошибка во время компиляции

<?php

namespace ImaginationMedia\SocialOrder\Ui\DataProvider\Sales\Order\Donation;

use ImaginationMedia\SocialOrder\Model\Helper;
use Magento\Backend\Model\Session;
use Magento\Framework\Api\Filter;
use Magento\Ui\DataProvider\AbstractDataProvider;
use Magento\Ui\DataProvider\AddFieldToCollectionInterface;
use Magento\Ui\DataProvider\AddFilterToCollectionInterface;

class DataProvider extends AbstractDataProvider
{
    /**
     * @var Helper
     */
    private $helper;

    /**
     * @var AddFieldToCollectionInterface[]
     */
    protected $addFieldStrategies;

    /**
     * @var AddFilterToCollectionInterface[]
     */
    protected $addFilterStrategies;

    /**
     * @var int
     */
    private $productId;

    /**
     * DataProvider constructor.
     * @param $name
     * @param $primaryFieldName
     * @param $requestFieldName
     * @param Helper $helper
     * @param Session $session
     * @param array $addFieldStrategies
     * @param array $addFilterStrategies
     * @param array $meta
     * @param array $data
     */
    public function __construct(
        $name,
        $primaryFieldName,
        $requestFieldName,
        Helper $helper,
        Session $session,
        array $addFieldStrategies = [],
        array $addFilterStrategies = [],
        array $meta = [],
        array $data = []
    ) {
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
        $this->addFieldStrategies = $addFieldStrategies;
        $this->addFilterStrategies = $addFilterStrategies;
        $this->helper = $helper;
        $this->productId = $session->getCurrentDonationProduct();
    }

    /**
     * @return \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection|\Magento\Sales\Model\ResourceModel\Order\Item\Collection
     */
    public function getCollection()
    {
        return $this->helper->getDonationOrders($this->productId);
    }

    /**
     * Get data
     *
     * @return array
     */
    public function getData()
    {
        $items = $this->getCollection();

        $items = $this->helper->getItemsInArray($items);

        $result = [
            'totalRecords' => $this->getCollection()->getSize(),
            'items' => array_values($items),
        ];
        return $result;
    }

    /**
     * Add field to select
     *
     * @param string $field
     * @param string $alias
     * @return void
     */
    public function addField($field, $alias = null)
    {
        if (isset($this->addFieldStrategies[$field])) {
            $this->addFieldStrategies[$field]->addField($this->getCollection(), $field, $alias);
        } else {
            parent::addField($field, $alias);
        }
    }

    /**
     * {@inheritdoc}
     */
    public function addFilter(Filter $filter)
    {
        if (isset($this->addFilterStrategies[$filter->getField()])) {
            $this->addFilterStrategies[$filter->getField()]
                ->addFilter(
                    $this->getCollection(),
                    $filter->getField(),
                    [$filter->getConditionType() => $filter->getValue()]
                );
        } else {
            parent::addFilter($filter);
        }
    }
Author: Rafael Corrêa Gomes, 2019-04-23

2 answers

> /**
>      * DataProvider constructor.
>      * @param $name                          <
>      * @param $primaryFieldName              <
>      * @param $requestFieldName              <
>      * @param Helper $helper
>      * @param Session $session
>      * @param array $addFieldStrategies
>      * @param array $addFilterStrategies
>      * @param array $meta
>      * @param array $data
>      */

Я решил свою проблему, добавив "строку"

      * DataProvider constructor.
      * @param string $name
      * @param string $primaryFieldName
      * @param string $requestFieldName

А затем очистка корневого каталога /var/кэша Magento и декомпиляция

 1
Author: Ed Tan, 2019-04-23 13:25:03

Попробуйте это:

<?php

namespace ImaginationMedia\SocialOrder\Ui\DataProvider\Sales\Order\Donation;

use ImaginationMedia\SocialOrder\Model\Helper;
use Magento\Backend\Model\Session;
use Magento\Framework\Api\Filter;
use Magento\Ui\DataProvider\AbstractDataProvider;
use Magento\Ui\DataProvider\AddFieldToCollectionInterface;
use Magento\Ui\DataProvider\AddFilterToCollectionInterface;

class DataProvider extends AbstractDataProvider
{
    /**
     * @var Helper
     */
    private $helper;

    /**
     * @var array
     */
    protected $addFieldStrategies;

    /**
     * @var array
     */
    protected $addFilterStrategies;

    /**
     * @var $productId
     */
    private $productId;

    /**
     * DataProvider constructor.
     * @param string|null $name
     * @param $primaryFieldName
     * @param $requestFieldName
     * @param Helper $helper
     * @param Session $session
     * @param array $addFieldStrategies
     * @param array $addFilterStrategies
     * @param array $meta
     * @param array $data
     */
    public function __construct(
        $name,
        $primaryFieldName,
        $requestFieldName,
        Helper $helper,
        Session $session,
        array $addFieldStrategies = [],
        array $addFilterStrategies = [],
        array $meta = [],
        array $data = []
    )
    {
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
        $this->addFieldStrategies = $addFieldStrategies;
        $this->addFilterStrategies = $addFilterStrategies;
        $this->helper = $helper;
        $this->productId = $session->getCurrentDonationProduct();
    }

    /**
     * @return mixed
     */
    public function getCollection()
    {
        return $this->helper->getDonationOrders($this->productId);
    }

    /**
     * @return array
     */
    public function getData()
    {
        $items = $this->getCollection();

        $items = $this->helper->getItemsInArray($items);

        $result = [
            'totalRecords' => $this->getCollection()->getSize(),
            'items' => array_values($items),
        ];
        return $result;
    }

    /**
     * @param $field
     * @param null $alias
     */
    public function addField($field, $alias = null)
    {
        if (isset($this->addFieldStrategies[$field])) {
            $this->addFieldStrategies[$field]->addField($this->getCollection(), $field, $alias);
        } else {
            parent::addField($field, $alias);
        }
    }

    /**
     * @param Filter $filter
     */
    public function addFilter(Filter $filter)
    {
        if (isset($this->addFilterStrategies[$filter->getField()])) {
            $this->addFilterStrategies[$filter->getField()]
                ->addFilter(
                    $this->getCollection(),
                    $filter->getField(),
                    [$filter->getConditionType() => $filter->getValue()]
                );
        } else {
            parent::addFilter($filter);
        }
    }
}
 0
Author: fmsthird, 2019-04-30 12:56:44