3

I am trying to create a custom grid in admin, based on customer collection using ui-component.

The problem that I am facing is that I am getting Class does not exist error and magento does not tell which class does not exist :|, and I cannot find anywhere in the code the error in this format.

The code from ui-component

<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">paid_listing.paid_listing_data_source</item>
 <item name="deps" xsi:type="string">paid_listing.paid_listing_data_source</item>
 </item>
 <item name="spinner" xsi:type="string">paid_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" translate="true">Add New Customer</item>
 <item name="class" xsi:type="string">primary</item>
 <item name="url" xsi:type="string">*/*/new</item>
 </item>
 </item>
 </argument>
 <dataSource name="paid_listing_data_source">
 <argument name="dataProvider" xsi:type="configurableObject">
 <argument name="class" xsi:type="string">Magento\Customer\Ui\Component\DataProvider</argument>
 <argument name="name" xsi:type="string">paid_listing_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>
 </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>
 <container name="listing_top">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="template" xsi:type="string">ui/grid/toolbar</item>
 </item>
 </argument>
 <bookmark name="bookmarks">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="storageConfig" xsi:type="array">
 <item name="namespace" xsi:type="string">paid_listing</item>
 </item>
 </item>
 </argument>
 </bookmark>
 <component name="columns_controls">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="columnsData" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.paid_columns</item>
 </item>
 <item name="component" xsi:type="string">Magento_Ui/js/grid/controls/columns</item>
 <item name="displayArea" xsi:type="string">dataGridActions</item>
 </item>
 </argument>
 </component>
 <exportButton name="export_button">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="selectProvider" xsi:type="string">paid_listing.paid_listing.paid_columns.ids</item>
 <item name="options" xsi:type="array">
 <item name="cvs" xsi:type="array">
 <item name="value" xsi:type="string">csv</item>
 <item name="label" xsi:type="string" translate="true">Export Current Page</item>
 <item name="url" xsi:type="string">mui/export/gridToCsv</item>
 </item>
 <item name="xml" xsi:type="array">
 <item name="value" xsi:type="string">xml</item>
 <item name="label" xsi:type="string" translate="true">Export All</item>
 <item name="url" xsi:type="string">reports_paid/export/gridToCsv</item>
 </item>
 </item>
 </item>
 </argument>
 </exportButton>
 <filterSearch name="fulltext">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing_data_source</item>
 <item name="chipsProvider" xsi:type="string">paid_listing.paid_listing.listing_top.listing_filters_chips</item>
 <item name="storageConfig" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.listing_top.bookmarks</item>
 <item name="namespace" xsi:type="string">current.search</item>
 </item>
 </item>
 </argument>
 </filterSearch>
 <filters name="listing_filters">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="columnsProvider" xsi:type="string">paid_listing.paid_listing.paid_columns</item>
 <item name="storageConfig" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.listing_top.bookmarks</item>
 <item name="namespace" xsi:type="string">current.filters</item>
 </item>
 <item name="childDefaults" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.listing_top.listing_filters</item>
 <item name="imports" xsi:type="array">
 <item name="visible" xsi:type="string">paid_listing.paid_listing.paid_columns.${ $.index }:visible</item>
 </item>
 </item>
 </item>
 </argument>
 </filters>
 <massaction name="listing_massaction">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="selectProvider" xsi:type="string">paid_listing.paid_listing.paid_columns.ids</item>
 <item name="component" xsi:type="string">Magento_Ui/js/grid/tree-massactions</item>
 <item name="indexField" xsi:type="string">entity_id</item>
 </item>
 </argument>
 <action name="delete">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="type" xsi:type="string">delete</item>
 <item name="label" xsi:type="string" translate="true">Delete</item>
 <item name="url" xsi:type="url" path="customer/index/massDelete"/>
 <item name="confirm" xsi:type="array">
 <item name="title" xsi:type="string" translate="true">Delete items</item>
 <item name="message" xsi:type="string" translate="true">Are you sure to delete selected customers?</item>
 </item>
 </item>
 </argument>
 </action>
 <action name="subscribe">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="type" xsi:type="string">subscribe</item>
 <item name="label" xsi:type="string" translate="true">Subscribe to Newsletter</item>
 <item name="url" xsi:type="url" path="customer/index/massSubscribe"/>
 </item>
 </argument>
 </action>
 <action name="unsubscribe">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="type" xsi:type="string">unsubscribe</item>
 <item name="label" xsi:type="string" translate="true">Unsubscribe from Newsletter</item>
 <item name="url" xsi:type="url" path="customer/index/massUnsubscribe"/>
 <item name="confirm" xsi:type="array">
 <item name="title" xsi:type="string" translate="true">Unsubscribe from Newsletter</item>
 <item name="message" xsi:type="string" translate="true">Are you sure to unsubscribe selected customers from newsletter?</item>
 </item>
 </item>
 </argument>
 </action>
 <action name="assign_to_group">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="type" xsi:type="string">assign_to_group</item>
 <item name="label" xsi:type="string" translate="true">Assign a Customer Group</item>
 </item>
 </argument>
 <argument name="actions" xsi:type="configurableObject">
 <argument name="class" xsi:type="string">Magento\Customer\Ui\Component\MassAction\Group\Options</argument>
 <argument name="data" xsi:type="array">
 <item name="urlPath" xsi:type="string">customer/index/massAssignGroup</item>
 <item name="paramName" xsi:type="string">group</item>
 <item name="confirm" xsi:type="array">
 <item name="title" xsi:type="string" translate="true">Assign a Customer Group</item>
 <item name="message" xsi:type="string" translate="true">Are you sure to assign selected customers to new group?</item>
 </item>
 </argument>
 </argument>
 </action>
 <action name="edit">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="type" xsi:type="string">edit</item>
 <item name="label" xsi:type="string" translate="true">Edit</item>
 <item name="callback" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.paid_columns_editor</item>
 <item name="target" xsi:type="string">editSelected</item>
 </item>
 </item>
 </argument>
 </action>
 </massaction>
 <paging name="listing_paging">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="storageConfig" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.listing_top.bookmarks</item>
 <item name="namespace" xsi:type="string">current.paging</item>
 </item>
 <item name="selectProvider" xsi:type="string">paid_listing.paid_listing.paid_columns.ids</item>
 </item>
 </argument>
 </paging>
 </container>
 <!--<columns name="paid_columns" class="Magento\Customer\Ui\Component\Listing\Columns">-->
 <columns name="paid_columns" class="My_Module\CustomerReports\Ui\Component\Listing\Columns">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="storageConfig" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.listing_top.bookmarks</item>
 <item name="namespace" xsi:type="string">current</item>
 </item>
 <item name="editorConfig" xsi:type="array">
 <item name="selectProvider" xsi:type="string">paid_listing.paid_listing.paid_columns.ids</item>
 <item name="enabled" xsi:type="boolean">true</item>
 <item name="indexField" xsi:type="string">entity_id</item>
 <item name="clientConfig" xsi:type="array">
 <item name="saveUrl" xsi:type="url" path="customer/index/inlineEdit"/>
 <item name="validateBeforeSave" xsi:type="boolean">false</item>
 </item>
 </item>
 <item name="childDefaults" xsi:type="array">
 <item name="fieldAction" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.paid_columns_editor</item>
 <item name="target" xsi:type="string">startEdit</item>
 <item name="params" xsi:type="array">
 <item name="0" xsi:type="string">${ $.$data.rowIndex }</item>
 <item name="1" xsi:type="boolean">true</item>
 </item>
 </item>
 <item name="storageConfig" xsi:type="array">
 <item name="provider" xsi:type="string">paid_listing.paid_listing.listing_top.bookmarks</item>
 <item name="root" xsi:type="string">columns.${ $.index }</item>
 <item name="namespace" xsi:type="string">current.${ $.storageConfig.root }</item>
 </item>
 </item>
 </item>
 </argument>
 <selectionsColumn name="ids">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="indexField" xsi:type="string">entity_id</item>
 <item name="sortOrder" xsi:type="number">0</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 name="sortOrder" xsi:type="number">20</item>
 </item>
 </argument>
 </column>
 <column name="firstname">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Firstname</item>
 <item name="editor" xsi:type="string">text</item>
 <item name="sortOrder" xsi:type="number">40</item>
 </item>
 </argument>
 </column>
 <column name="lastname">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Lastname</item>
 <item name="editor" xsi:type="string">text</item>
 <item name="sortOrder" xsi:type="number">50</item>
 </item>
 </argument>
 </column>
 <column name="email">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="editor" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Email</item>
 <item name="sortOrder" xsi:type="number">30</item>
 </item>
 </argument>
 </column>
 <column name="group_id">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">select</item>
 <item name="editor" xsi:type="string">select</item>
 <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
 <item name="dataType" xsi:type="string">select</item>
 <item name="label" xsi:type="string" translate="true">Group</item>
 <item name="sortOrder" xsi:type="number">90</item>
 </item>
 </argument>
 </column>
 <column name="billing_telephone">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="editor" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Phone</item>
 <item name="sortOrder" xsi:type="number">100</item>
 </item>
 </argument>
 </column>
 <column name="created_at" class="Magento\Ui\Component\Listing\Columns\Date">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">dateRange</item>
 <item name="dataType" xsi:type="string">date</item>
 <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
 <item name="label" xsi:type="string" translate="true">Customer Since</item>
 <item name="sortOrder" xsi:type="number">110</item>
 </item>
 </argument>
 </column>
 <column name="last_visit_at" class="Magento\Ui\Component\Listing\Columns\Date">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
 <item name="filter" xsi:type="string">dateRange</item>
 <item name="visible" xsi:type="boolean">false</item>
 <item name="dataType" xsi:type="string">date</item>
 <item name="label" xsi:type="string" translate="true">Last Logged In</item>
 <item name="sortOrder" xsi:type="number">120</item>
 </item>
 </argument>
 </column>
 <column name="created_in">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="visible" xsi:type="boolean">false</item>
 <item name="label" xsi:type="string" translate="true">Account Created in</item>
 <item name="sortOrder" xsi:type="number">140</item>
 </item>
 </argument>
 </column>
 <column name="kpi_views_customer">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Kpi Views</item>
 <item name="sortOrder" xsi:type="number">60</item>
 </item>
 </argument>
 </column>
 <column name="customer_membership">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Customer Membership</item>
 <item name="sortOrder" xsi:type="number">70</item>
 </item>
 </argument>
 </column>
 <column name="customer_access">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="filter" xsi:type="string">text</item>
 <item name="label" xsi:type="string" translate="true">Customer Access</item>
 <item name="sortOrder" xsi:type="number">80</item>
 </item>
 </argument>
 </column>
 <actionsColumn name="actions" class="Magento\Customer\Ui\Component\Listing\Column\Actions">
 <argument name="data" xsi:type="array">
 <item name="config" xsi:type="array">
 <item name="indexField" xsi:type="string">entity_id</item>
 <item name="sortOrder" xsi:type="number">222</item>
 </item>
 </argument>
 </actionsColumn>
 </columns>
</listing>

Has anyone encountered this type of error ?

Thanks

asked May 27, 2016 at 11:14
8
  • can you add the code from your ui-component file? Commented May 27, 2016 at 11:38
  • Added the code from ui-component Commented May 27, 2016 at 12:08
  • Does the class My_Module\CustomerReports\Ui\Component\Listing\Columns exist ? Commented May 27, 2016 at 12:26
  • Yes, the class exists Commented May 27, 2016 at 12:31
  • Hey, please let me know how you resolved this error. Commented Jul 29, 2016 at 9:45

1 Answer 1

3

To create a custom grid in the admin panel is necessary add this code in /etc/di.xml to specify the collection.

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <virtualType name="Namespace\Module\Model\ResourceModel\YourModel\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
 <arguments>
 <argument name="mainTable" xsi:type="string">your_main_table</argument>
 <argument name="resourceModel" xsi:type="string">Namespace\Module\Model\ResourceModel\YourResourceModel</argument>
 </arguments>
 </virtualType>
 <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
 <arguments>
 <argument name="collections" xsi:type="array">
 <!--data provider name which used in grid ui component file -->
 <item name="paid_listing_data_source" xsi:type="string">Namespace\Module\Model\ResourceModel\YourModel\Grid\Collection</item>
 </argument>
 </arguments>
 </type>
</config>

You can see how your provider data specified paid_listing.paid_listing_data_source is specified in the second type with your grid collection.

answered Sep 21, 2017 at 11:43
6
  • 1
    @Rahul Mateos, I tried above code but still i am getting same error. can you help me please Commented Oct 27, 2017 at 11:59
  • Hi @ErSarveshVTiwari, sorry for the delay, I has been very busy. Can you specify more the error and your code, please? Commented Nov 24, 2017 at 13:40
  • I have the same issue, no more error info :( Commented Dec 17, 2017 at 18:25
  • Can you share your code? Commented Dec 17, 2017 at 18:28
  • My di.xml gist.github.com/giordhano/52451211ed971a5657cc81e2e7aad48e Listing ui component.xml gist.github.com/giordhano/5ca8f961f9b625338155f6005c846f3a Commented Dec 17, 2017 at 18:39

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.