Ошибка при запуске программы установки bin/magento:di:компиляция


После запуска bin/magento setup:di:compile я получаю следующую ошибку.

Ошибки при компиляции:

Поставщик\Модуль\Пользовательский интерфейс\Компонент\Поставщик данных\Поставщик оборудования Несовместимый тип аргумента: Требуемый тип: строка. Фактический тип: \Очарование\Знаменитости\Пользовательский интерфейс\Компонент\Поставщик данных\имя; Файл: /var/www/vhosts/phoenix/app/code/Vendor/Module/Ui/Component/DataProvider/OutfitProvider.php

Вот код пользовательского интерфейса список

<dataSource name="outfit_listing_data_source">
    <argument name="dataProvider" xsi:type="configurableObject">
        <argument name="class" xsi:type="string">Vendor\Module\Ui\Component\DataProvider\OutfitProvider</argument>
        <argument name="name" xsi:type="string">outfit_listing_data_source</argument>
        <argument name="primaryFieldName" xsi:type="string">celebrity_outfit_id</argument>
        <argument name="requestFieldName" xsi:type="string">id</argument>
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="update_url" xsi:type="url" path="mui/index/render"/>
            </item>
        </argument>
    </argument>
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
        </item>
    </argument>
</dataSource>

Класс

        use Magento\Ui\DataProvider\AbstractDataProvider;
        use Magento\Framework\App\Request\Http;
        use Vendor\Module\Model\ResourceModel\Outfit\CollectionFactory as OutfitCollectionFactory;
        use Magento\Framework\Session\SessionManagerInterface;
        use Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface;

        class OutfitProvider extends AbstractDataProvider implements DataProviderInterface
        {

            protected $_outfitCollection;

            protected $_request;

            protected $_sessionManger;


            public function __construct(
                $name,
                $primaryFieldName,
                $requestFieldName,
                array $meta = [],
                array $data = [],
                OutfitCollectionFactory $outfitCollection,
                Http $request,
                SessionManagerInterface $sessionManager
            ) {
                parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
                $this->_request = $request;
                $this->_sessionManger = $sessionManager;
                $this->_outfitCollection = $outfitCollection;
                $this->initCollection();
            }


            public function initCollection()
            {
                $id = $this->_request->getParam("id");
                if(isset($id))
                {
                    $this->_sessionManger->setCelebrityId($id);
                }
                $collection = $this->_outfitCollection->create();
                $this->collection = $collection;
                $this->collection->addFieldToFilter("celebrity_id", array("eq" => $this->_sessionManger->getCelebrityId()));
            }

        }
Author: Ghulam.M, 2019-05-15

1 answers

Добавьте блок документов в метод __construct и введите подсказку как string следующим образом $name, $primaryFieldName, $requestFieldName.

/**
 * @param string $name
 * @param string $primaryFieldName
 * @param string $requestFieldName
 * @param array $meta
 * @param array $data
 * @param OutfitCollectionFactory $outfitCollection
 * @param Http $request
 * @param SessionManagerInterface $sessionManager
 */

Кроме того, параметры вашего конструктора со значениями по умолчанию должны быть добавлены последними.

 2
Author: Marius, 2019-05-15 05:36:49