Проблема массового действия пользовательской сетки отгрузки с UiComponentFactory::argumentsresolver()


Я добавил пользовательское массовое действие в сетку отправлений для отправки нескольких отслеживаемых электронных писем одновременно, и часть сбора выдает ошибку, потому что я, должно быть, что-то упустил.

Для справки я посмотрел на класс Magento\Cms\Controller\Adminhtml\Page\MassDisable. Поэтому я придумал вот что:

/app/code/PerunPro/DPD/Controller/Adminhtml/Shipment/MassSendTracking.php

<?php
namespace PerunPro\DPD\Controller\Adminhtml\Shipment;

use Magento\Backend\App\Action\Context;
use Magento\Framework\Controller\ResultFactory;
use Magento\Sales\Api\ShipmentManagementInterface;
use Magento\Sales\Model\ResourceModel\Order\Shipment\CollectionFactory;
use Magento\Ui\Component\MassAction\Filter;

class MassSendTracking extends \Magento\Backend\App\Action
{
    /**
     * Authorization level of a basic admin session
     *
     * @see _isAllowed()
     */
    const ADMIN_RESOURCE = 'Magento_Sales::shipment';

    /**
     * @var Filter
     */
    protected $filter;

    /**
     * @var CollectionFactory
     */
    protected $collectionFactory;

    protected $shipmentManagement;

    public function __construct(
        Context $context,
        Filter $filter,
        CollectionFactory $collectionFactory,
        ShipmentManagementInterface $shipmentManagement
    ) {
        $this->filter = $filter;
        $this->collectionFactory = $collectionFactory;
        $this->shipmentManagement = $shipmentManagement;
        parent::__construct($context);
    }

    public function execute()
    {
        $collection = $this->filter->getCollection($this->collectionFactory->create());

        // Do stuff

        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
        $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
        return $resultRedirect->setPath('*/*/');
    }
}

Когда я отправляю запрос, я получаю следующую ошибку:

Неустранимая ошибка: Неперехваченная ошибка типа: Аргумент 2 передан Magento\Фреймворк\Представление\Элемент\uicomponentfactory::Решатель аргументов() должен иметь тип массива, заданный null, вызываемый в /var/www/magento/v2_2/vendor/magento/framework/View/Element/UiComponentFactory.php в строке 198 и определен в /var/www/magento/v2_2/vendor/magento/framework/View/Element/UiComponentFactory.php в строке 164

Я предполагаю, что мне не хватает некоторых вещей в di.xml , потому что Magento\Sales\Model\ResourceModel\Order\Shipment\CollectionFactory не существует, но также не существует и Magento\Cms\Model\ResourceModel\Page\CollectionFactory, который находится на странице\Massdisable. CMS-система управления di.xml есть вот что об этом:

<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="cms_page_listing_data_source" xsi:type="string">Magento\Cms\Model\ResourceModel\Page\Grid\Collection</item>
                <item name="cms_block_listing_data_source" xsi:type="string">Magento\Cms\Model\ResourceModel\Block\Grid\Collection</item>
            </argument>
        </arguments>
    </type>

Поэтому я попробовал с дикой догадкой в своей собственной di.xml :

<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="sales_order_shipment_grid_data_source" xsi:type="string">Magento\Sales\Model\ResourceModel\Order\Shipment\Grid\Collection</item>
            </argument>
        </arguments>
    </type>

Что, конечно, не имеет никакого эффекта:) Пожалуйста, помогите.

Мой module.xml последовательность, я думал, что это будет означать, что он также загружает информацию о сетке XML, но очевидно, что это не

<sequence>
    <module name="Magento_Sales"/>
    <module name="Magento_Shipping"/>
</sequence>
Author: Omer Sabic, 2017-11-16

2 answers

Я понял это... Поскольку я хотел продолжить эту работу и попытался ее отладить, я заметил, что сегодня она работает.

Пока я работал над другими вещами, я несколько раз запускал команду setup:di:compile в командной строке. Я думаю, что это то, чего не хватало из вышеперечисленного. Кроме того, материал в di.xml не нужен.

 0
Author: Omer Sabic, 2017-11-27 14:24:58

У меня возникла эта проблема, когда я ссылался на компонент пользовательского интерфейса в папке с неправильным именем. У меня это было как view/adminhtml/uiComponent, когда это должно быть view/adminhtml/ui_component.

 0
Author: ol'bob dole, 2018-05-03 21:44:48