Пользовательская сетка администратора не показывает никаких данных в моем приложении Magento 2 - PullRequest
0 голосов
/ 19 апреля 2019

В настоящее время я работаю над созданием новой настраиваемой сетки, которая отображает определенные атрибуты клиентов в панели администратора (аналогично сетке в панели администратора -> Клиенты -> Все клиенты, но отображает только идентификатор клиента, имя клиента, телефон, статус проверки и номер лицензии).

Когда я заканчиваю свой код и перезагружаю страницу, сетка не показывает никаких данных, а появляется только вращающееся колесо.

verification status и license number - это пользовательские атрибуты, которые я добавил клиенту через UpgradeData.php

Я создаю пользовательскую сетку с помощью uicomponent. Я прочитал этот урок https://www.mageplaza.com/magento-2-module-development/create-admin-grid-magento-2.html и использую генератор кода Alan Storm Pestle.phar для генерации относительного кода.

Моя пользовательская сетка администратора настроена на Панель администратора -> Клиент -> Проверка

Следующие файлы - это мой код. Я не знаю, какая часть не так и делает ошибку.

happyhackers / клиент / и т.д. / di.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">    
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="happyhackers_customer_verification_data_source" xsi:type="string">Magento\Customer\Model\ResourceModel\Grid\Collection</item>
            </argument>
        </arguments>
    </type>
</config>

happyhackers / клиент / вид / adminhtml / ui_component / happyhackers_customer_verification.xml

<?xml version="1.0"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">happyhackers_customer_verification.happyhackers_customer_verification_data_source</item>
            <item name="deps" xsi:type="string">happyhackers_customer_verification.happyhackers_customer_verification_data_source</item>
        </item>
        <item name="spinner" xsi:type="string">happyhackers_customer_verification_columns</item>
        <item name="buttons" xsi:type="array">
            <item name="add" xsi:type="array">
                <item name="name" xsi:type="string">add</item>
                <item name="label" xsi:type="string">Add New</item>
                <item name="class" xsi:type="string">primary</item>
                <item name="url" xsi:type="string">*/Grid/new</item>
            </item>
        </item>
    </argument>
    <dataSource name="happyhackers_customer_verification_data_source">
        <argument name="dataProvider" xsi:type="configurableObject">
            <argument name="class" xsi:type="string">Happyhackers\Customer\Ui\Component\Listing\DataProviders\Happyhackers\Customer\Verification</argument>
            <argument name="name" xsi:type="string">happyhackers_customer_verification_data_source</argument>
            <argument name="primaryFieldName" xsi:type="string">entity_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 name="storageConfig" xsi:type="array">
                        <item name="indexField" xsi:type="string">entity_id</item>
                    </item>
                </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>
    <listingToolbar name="listing_top">
        <settings>
            <sticky>true</sticky>
        </settings>
        <paging name="listing_paging"/>
        <filters name="listing_filters"/>
    </listingToolbar>
    <columns name="happyhackers_customer_verification_columns">
        <selectionsColumn name="ids">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="resizeEnabled" xsi:type="boolean">false</item>
                    <item name="resizeDefaultWidth" xsi:type="string">55</item>
                    <item name="indexField" xsi:type="string">entity_id</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
            </argument>
        </selectionsColumn>
        <column name="entity_id">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="filter" xsi:type="string">textRange</item>
                    <item name="sorting" xsi:type="string">asc</item>
                    <item name="label" xsi:type="string" translate="true">ID</item>
                </item>
            </argument>
        </column>
        <column name="name">
            <settings>
                <filter>text</filter>
                <editor>
                    <editorType>text</editorType>
                </editor>
                <label translate="true">Name</label>
            </settings>
        </column>
        <column name="email">
            <settings>
                <filter>text</filter>
                <label translate="true">Email</label>
            </settings>
        </column>
        <column name="billing_telephone" sortOrder="60">
            <settings>
                <filter>text</filter>
                <label translate="true">Phone</label>
            </settings>
        </column>
        <column name="verification_status">
            <settings>
                <filter>text</filter>
                <editor>
                    <editorType>text</editorType>
                </editor>
                <label translate="true">Verification</label>
            </settings>
        </column>
        <actionsColumn name="actions" class="Happyhackers\Customer\Ui\Component\Listing\Column\Happyhackerscustomerverification\PageActions">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="resizeEnabled" xsi:type="boolean">false</item>
                    <item name="resizeDefaultWidth" xsi:type="string">107</item>
                    <item name="indexField" xsi:type="string">entity_id</item>
                    <item name="sortOrder" xsi:type="number">200</item>
                </item>
            </argument>
        </actionsColumn>
    </columns>
</listing>

И Pestle.phar автоматически создает для меня два php-файла, но я не уверен, что это вызовет проблему.

happyhackers / клиент / Ui / Компонент / Список / колонки / Happyhackerscustomerverification / PageAction.php

<?php
namespace Happyhackers\Customer\Ui\Component\Listing\Column\Happyhackerscustomerverification;

class PageActions extends \Magento\Ui\Component\Listing\Columns\Column
{
    public function prepareDataSource(array $dataSource)
    {
        if (isset($dataSource["data"]["items"])) {
            foreach ($dataSource["data"]["items"] as & $item) {
                $name = $this->getData("name");
                $id = "X";
                if(isset($item["entity_id"]))
                {
                    $id = $item["entity_id"];
                }
                $item[$name]["view"] = [
                    "href"=>$this->getContext()->getUrl(
                        "happyhackers_customer_verification/grid/edit",["entity_id"=>$id]),
                    "label"=>__("Edit")
                ];
            }
        }

        return $dataSource;
    }    

}

Happyhackers / Клиент / Ui / Компонент / Список / DataProviders / Happyhackers / Клиент / Verification.php

<?php
namespace Happyhackers\Customer\Ui\Component\Listing\DataProviders\Happyhackers\Customer;

class Verification extends \Magento\Ui\DataProvider\AbstractDataProvider
{    
    public function __construct(
        $name,
        $primaryFieldName,
        $requestFieldName,
        \Magento\Customer\Model\ResourceModel\Grid\CollectionFactory $collectionFactory,
        array $meta = [],
        array $data = []
    ) {
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
        $this->collection = $collectionFactory->create();
    }
}

Я ожидаю, что на странице панели администратора -> Клиенты -> Подтверждение пользовательский набор представляет идентификатор клиента, имя клиента, номер лицензии, телефон и статус проверки. Но на самом деле это возвращает меня к внутренней странице ошибки сервера.

Если я закомментирую контент в di.xml, по крайней мере, он покажет мне структуру сетки, но ничего внутри ячеек сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...