Ошибка при запуске программы установки 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()));
}
}
3
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