Ui
Component
AddVendor
DataProvider.php
Listing
Column
BlockActions.php
Vendor
DataProvider.php
view
adminhtml
layout
vendor_add_index.xml
vendor_index_index.xml
ui_component
vendor_form.xml
vendor_listing.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
<add id="Codilar_ProductVendor::vendor" title="Vendor" translate="title" module="Codilar_ProductVendor" sortOrder="50"
resource="Codilar_ProductVendor::vendor"/>
<add id="Codilar_ProductVendor::uic_employee"
resource="Codilar_ProductVendor::uic_employee"
title="Employee"
translate="title"
module="Codilar_ProductVendor"
sortOrder="0"
parent="Codilar_ProductVendor::vendor"/>
<add id="Codilar_ProductVendor::vendor_showvendor"
resource="Codilar_ProductVendor::vendor_showvendor"
title="Show Vendors"
translate="title"
module="Codilar_ProductVendor"
sortOrder="50"
action="vendor/index"
parent="Codilar_ProductVendor::vendor"/>
<add id="Codilar_ProductVendor::vendor_addvendor"
resource="Codilar_ProductVendor::vendor_addvendor"
title="Add Employee"
translate="title"
module="Codilar_ProductVendor"
sortOrder="51"
action="vendor/add/"
parent="Codilar_ProductVendor::vendor"/>
</menu>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<form 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">vendor_form.block_form_data_source</item>
</item>
<item name="label" xsi:type="string" translate="true">New employee</item>
<item name="template" xsi:type="string">templates/form/collapsible</item>
</argument>
<settings>
<buttons>
<!--<button name="save_and_continue" class="Codilar\VirtualStoreWiseTimeslot\Block\Adminhtml\Timeslot\Edit\SaveAndContinueButton"/>-->
<button name="save" class="Codilar\ProductVendor\Block\Adminhtml\Vendor\Add\SaveButton"/>
<!-- <!–<button name="reset" class="Codilar\VirtualStoreWiseTimeslot\Block\Adminhtml\Timeslot\Edit\ResetButton"/>–>-->
<!-- <!–<button name="delete" class="Codilar\VirtualStoreWiseTimeslot\Block\Adminhtml\Timeslot\Edit\DeleteButton"/>–>-->
<button name="back" class="Codilar\ProductVendor\Block\Adminhtml\Vendor\Add\BackButton"/>
</buttons>
<namespace>vendor_form</namespace>
<dataScope>data</dataScope>
<deps>
<dep>vendor_form.block_form_data_source</dep>
</deps>
</settings>
<dataSource name="block_form_data_source">
<argument name="data" xsi:type="array">
<item name="js_config" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/form/provider</item>
</item>
</argument>
<settings>
<submitUrl path="vendor/add/save"/>
</settings>
<dataProvider class="Codilar\ProductVendor\Ui\Component\AddVendor\DataProvider" name="block_form_data_source">
<settings>
<requestFieldName>vendor_id</requestFieldName>
<primaryFieldName>vendor_id</primaryFieldName>
</settings>
</dataProvider>
</dataSource>
<fieldset name="general">
<settings>
<label/>
</settings>
<field name="vendor_id" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">block</item>
</item>
</argument>
<settings>
<dataType>text</dataType>
<visible>false</visible>
<dataScope>vendor_id</dataScope>
</settings>
</field>
<field name="vendor_name" sortOrder="40" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">vendor</item>
</item>
</argument>
<settings>
<validation>
<rule name="required-entry" xsi:type="boolean">true</rule>
</validation>
<dataType>text</dataType>
<label translate="true">Vendor Name</label>
<dataScope>vendor_name</dataScope>
</settings>
</field>
<field name="vendor_address" sortOrder="50" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">vendor</item>
</item>
</argument>
<settings>
<validation>
<rule name="required-entry" xsi:type="boolean">true</rule>
</validation>
<dataType>text</dataType>
<label translate="true">Vendor Address</label>
<dataScope>vendor_address</dataScope>
</settings>
</field>
<field name="vendor_email" sortOrder="60" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">vendor</item>
</item>
</argument>
<settings>
<validation>
<rule name="required-entry" xsi:type="boolean">true</rule>
</validation>
<dataType>text</dataType>
<label translate="true">Vendor Email</label>
<dataScope>vendor_email</dataScope>
</settings>
</field>
<field name="vendor_phone_number" sortOrder="62" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">vendor</item>
</item>
</argument>
<settings>
<validation>
<rule name="required-entry" xsi:type="boolean">true</rule>
</validation>
<dataType>text</dataType>
<label translate="true">Phone Number</label>
<dataScope>vendor_phone_number</dataScope>
</settings>
</field>
</fieldset>
</form>
<?xml version="1.0" encoding="UTF-8"?>
<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">vendor_listing.vendor_listing_data_source</item>
</item>
</argument>
<settings>
<buttons>
<button name="add">
<url path="*/add"/>
<class>primary</class>
<label translate="true">Add New Vendor</label>
</button>
</buttons>
<spinner>vendor_listing_columns</spinner>
<deps>
<dep>vendor_listing.vendor_listing_data_source</dep>
</deps>
</settings>
<dataSource name="vendor_listing_data_source" component="Magento_Ui/js/grid/provider">
<settings>
<storageConfig>
<param name="indexField" xsi:type="string">vendor_id</param>
</storageConfig>
<updateUrl path="mui/index/render"/>
</settings>
<aclResource>KnightWing_UIC::employees_listing</aclResource>
<dataProvider class="Codilar\ProductVendor\Ui\Component\Vendor\DataProvider" name="vendor_listing_data_source">
<settings>
<requestFieldName>vendor_id</requestFieldName>
<primaryFieldName>vendor_id</primaryFieldName>
</settings>
</dataProvider>
</dataSource>
<listingToolbar name="listing_top">
<settings>
<sticky>true</sticky>
</settings>
<bookmark name="bookmarks"/>
<columnsControls name="columns_controls"/>
<filters name="listing_filters">
<settings>
<templates>
<filters>
<select>
<param name="template" xsi:type="string">ui/grid/filters/elements/ui-select</param>
<param name="component" xsi:type="string">Magento_Ui/js/form/element/ui-select</param>
</select>
</filters>
</templates>
</settings>
</filters>
<massaction name="listing_massaction">
<action name="delete">
<settings>
<confirm>
<message translate="true">Are you sure you want to delete selected items?</message>
<title translate="true">Delete items</title>
</confirm>
<url path="vendor/massDelete/"/>
<type>delete</type>
<label translate="true">Delete</label>
</settings>
</action>
<action name="edit">
<settings>
<callback>
<target>editSelected</target>
<provider>vendor_listing.vendor_listing.vendor_listing_columns_editor</provider>
</callback>
<url path="vendor/massedit/"/>
<type>edit</type>
<label translate="true">Edit</label>
</settings>
</action>
</massaction>
<paging name="listing_paging"/>
</listingToolbar>
<columns name="vendor_listing_columns">
<settings>
<editorConfig>
<param name="clientConfig" xsi:type="array">
<item name="saveUrl" xsi:type="url" path="vendor/inlineEdit"/>
<item name="validateBeforeSave" xsi:type="boolean">false</item>
</param>
<param name="indexField" xsi:type="string">vendor_id</param>
<param name="enabled" xsi:type="boolean">true</param>
<param name="selectProvider" xsi:type="string">vendor_listing.vendor_listing.vendor_listing_columns.ids</param>
</editorConfig>
<childDefaults>
<param name="fieldAction" xsi:type="array">
<item name="provider" xsi:type="string">vendor_listing.vendor_listing.vendor_listing_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>
</param>
</childDefaults>
</settings>
<selectionsColumn name="ids">
<settings>
<indexField>vendor_id</indexField>
<resizeEnabled>false</resizeEnabled>
<resizeDefaultWidth>55</resizeDefaultWidth>
</settings>
</selectionsColumn>
<column name="vendor_id">
<settings>
<filter>textRange</filter>
<label translate="true">ID</label>
<sorting>asc</sorting>
</settings>
</column>
<column name="vendor_name">
<settings>
<filter>text</filter>
<editor>
<editorType>text</editorType>
</editor>
<dataType>text</dataType>
<label translate="true">Vendor Name</label>
</settings>
</column>
<column name="vendor_address">
<settings>
<filter>textRage</filter>
<editor>
<editorType>text</editorType>
</editor>
<dataType>text</dataType>
<label translate="true">Vendor Address</label>
</settings>
</column>
<column name="vendor_email">
<settings>
<filter>text</filter>
<editor>
<editorType>text</editorType>
</editor>
<dataType>text</dataType>
<label translate="true">Vendor Email</label>
</settings>
</column>
<column name="vendor_phone_number">
<settings>
<filter>text</filter>
<editor>
<editorType>text</editorType>
</editor>
<dataType>text</dataType>
<label translate="true">Vendor Phone</label>
</settings>
</column>
<actionsColumn name="action" class="Codilar\ProductVendor\Ui\Component\Listing\Column\BlockActions">
<settings>
<indexField>vendor_id</indexField>
<label translate="true">Action</label>
</settings>
</actionsColumn>
</columns>
</listing>
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<uiComponent name="vendor_form" />
</referenceContainer>
</body>
</page>
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<uiComponent name="vendor_listing" />
</referenceContainer>
</body>
</page>
<?php
namespace Codilar\ProductVendor\Ui\Component\Vendor;
use Magento\Ui\DataProvider\AbstractDataProvider;
class DataProvider extends AbstractDataProvider
{
public function __construct(
$name,
$primaryFieldName,
$requestFieldName,
\Codilar\ProductVendor\Model\ResourceModel\ProductVendor\Collection $collectionFactory,
array $meta = [],
array $data = []
) {
$this->collection = $collectionFactory;
parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
}
}
<?php
namespace Codilar\ProductVendor\Ui\Component\AddVendor;
use Codilar\ProductVendor\Model\ResourceModel\ProductVendor\CollectionFactory;
use Magento\Framework\App\RequestInterface;
use Magento\Ui\DataProvider\AbstractDataProvider;
class DataProvider extends AbstractDataProvider
{
/**
* @var array
*/
protected $loadedData;
/**
* @var RequestInterface
*/
private $request;
/**
* @var CollectionFactory
*/
private $collectionFactory;
/**
* DataProvider constructor.
* @param string $name
* @param string $primaryFieldName
* @param string $requestFieldName
* @param CollectionFactory $collectionFactory
* @param RequestInterface $request
* @param array $meta
* @param array $data
*/
public function __construct(
string $name,
string $primaryFieldName,
string $requestFieldName,
CollectionFactory $collectionFactory,
RequestInterface $request,
array $meta = [],
array $data = []
) {
$this->collection = $collectionFactory->create();
parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
$this->request = $request;
$this->collectionFactory = $collectionFactory;
}
public function getData()
{
if (isset($this->loadedData)) {
return $this->loadedData;
}
$id = $this->request->getParam('vendor_id');
$items = $this->collectionFactory->create()->addFieldToFilter('vendor_id', $id)->getItems();
foreach ($items as $item) {
$this->loadedData[$item->getId()] = $item->getData();
}
return $this->loadedData;
}
}
Ui
Component
AddVendor
DataProvider.php
Listing
Column
BlockActions.php
Vendor
DataProvider.php
view
adminhtml
layout
vendor_add_index.xml
vendor_index_index.xml
ui_component
vendor_form.xml
vendor_listing.xml
<?php
namespace Codilar\ProductVendor\Ui\Component\Listing\Column;
use Magento\Cms\Block\Adminhtml\Page\Grid\Renderer\Action\UrlBuilder;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Ui\Component\Listing\Columns\Column;
class BlockActions extends Column
{
const VENDOR_URL_PATH_DELETE = 'vendor/delete/index';
/**
* @var UrlBuilder
*/
protected $actionUrlBuilder;
/**
* @var \Magento\Framework\UrlInterface
*/
protected $urlBuilder;
/**
* @var string
*/
private $editUrl;
/**
* @param ContextInterface $context
* @param UiComponentFactory $uiComponentFactory
* @param UrlBuilder $actionUrlBuilder
* @param UrlInterface $urlBuilder
* @param array $components
* @param array $data
*/
public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
UrlBuilder $actionUrlBuilder,
UrlInterface $urlBuilder,
array $components = [],
array $data = []
) {
$this->urlBuilder = $urlBuilder;
$this->actionUrlBuilder = $actionUrlBuilder;
parent::__construct($context, $uiComponentFactory, $components, $data);
}
/**
* @inheritDoc
*/
public function prepareDataSource(array $dataSource)
{
if (isset($dataSource['data']['items'])) {
foreach ($dataSource['data']['items'] as & $item) {
$name = $this->getData('name');
if (isset($item['vendor_id'])) {
$item[$name]['delete'] = [
'href' => $this->urlBuilder->getUrl(self::VENDOR_URL_PATH_DELETE, ['vendor_id' => $item['vendor_id']]),
'label' => __('Delete'),
'confirm' => [
'title' => __('Delete '),
'message' => __('Are you sure you want to delete a record?'),
'__disableTmpl' => true,
],
'post' => true,
];
$item[$name]['edit'] = [
'href' => $this->urlBuilder->getUrl('vendor/add/index', ['vendor_id' => $item['vendor_id']]),
'label' => __('Edit'),
'post' => true,
];
}
if (isset($item['identifier'])) {
$item[$name]['preview'] = [
'href' => $this->actionUrlBuilder->getUrl(
$item['identifier'],
isset($item['_first_store_id']) ? $item['_first_store_id'] : null,
isset($item['store_code']) ? $item['store_code'] : null
),
'label' => __('View')
];
}
}
}
return $dataSource;
}
}