How to create a listing grid using UI component in the backend without a database ?
Teja Bhagavan Kollepara
3,8275 gold badges33 silver badges69 bronze badges
asked Sep 4, 2019 at 3:36
MichaelHa
6611 gold badge8 silver badges24 bronze badges
-
do u want to get data from array??Waqar Ali– Waqar Ali2019年09月04日 04:59:15 +00:00Commented Sep 4, 2019 at 4:59
-
anyway, Just don't use the database, please give me a solution. Thank for reply.MichaelHa– MichaelHa2019年09月04日 05:05:07 +00:00Commented Sep 4, 2019 at 5:05
-
please Check My Answer......Waqar Ali– Waqar Ali2019年09月04日 05:22:14 +00:00Commented Sep 4, 2019 at 5:22
1 Answer 1
in Your
Vendor\Module\Ui\DataProvider\DataProvider.php
use Magento\Framework\App\Request\Http;
use Magento\Ui\DataProvider\AbstractDataProvider;
/**
* Class DataProvider
*/
class DataProvider extends AbstractDataProvider
{
/**
* @var \Magento\Ui\DataProvider\AddFieldToCollectionInterface[]
*/
private $addFieldStrategies;
/**
* @var \Magento\Ui\DataProvider\AddFilterToCollectionInterface[]
*/
private $addFilterStrategies;
/**
* Media path to extension images
*
* @var string
*/
private $collectionFactory;
/**
* Media path to extension images
*
* @var string
*/
private $saveImage;
/**
* Construct
*
* DataProvider constructor.
* @param string $name
* @param string $primaryFieldName
* @param string $requestFieldName
*/
public function __construct(
\Magento\Framework\Api\Search\SearchCriteriaBuilder $searchCriteriaBuilder,
$name,
$primaryFieldName,
$requestFieldName,
Http $request,
CollectionFactory $collectionFactory,
array $meta = [],
array $data = []
) {
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
$this->request = $request;
parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
}
/**
* Preparing Collection For Grid
*
* @return Array
*/
public function getCollection()
{
//Put Your Data in this Variable
$data =
//Default Objects
$pagesize = intval($this->request->getParam('paging')['pageSize']);
$pageCurrent = intval($this->request->getParam('paging')['current']);
$pageoffset = ($pageCurrent - 1) * $pagesize;
return [
'totalRecords' => count($data),
'items' => array_slice($data, $pageoffset, $pageoffset + $pagesize),
];
}
/**
* Return Prepared Data To Admin Grid
*
* @return AbstractDataProvider
*/
public function getData()
{
if (!$this->getCollection()) {
$this->getCollection();
}
return $this->getCollection();
}
/**
* Adding Filters To Grid Collection
*
*/
public function addFilter(\Magento\Framework\Api\Filter $filter)
{
$this->searchCriteriaBuilder->addFilter($filter);
}
/**
* Adding Order To Grid Collection
*
*/
public function addOrder($field, $direction)
{
$this->searchCriteriaBuilder->addSortOrder($field, $direction);
}
/**
* Set Limit To Admin Collection
*
*/
public function setLimit($offset, $size)
{
$this->searchCriteriaBuilder->setPageSize($size);
$this->searchCriteriaBuilder->setCurrentPage($offset);
}
}
Now in
Vendor\Module\view\adminhtml\ui_component\frontname_module_controller.xml
<argument name="dataProvider" xsi:type="configurableObject">
<argument name="class" xsi:type="string">Vendor\Module\Ui\DataProvider\DataProvider.</argument>
</argument>
Hope this will help You
answered Sep 4, 2019 at 5:20
Waqar Ali
2,35720 silver badges47 bronze badges
-
Please give me full solution. Thank you.MichaelHa– MichaelHa2019年09月04日 06:35:01 +00:00Commented Sep 4, 2019 at 6:35
-
what type of data you want to show in GridWaqar Ali– Waqar Ali2019年09月04日 06:37:21 +00:00Commented Sep 4, 2019 at 6:37
-
simply text. I just need a grid.MichaelHa– MichaelHa2019年09月04日 06:39:12 +00:00Commented Sep 4, 2019 at 6:39
-
ho much coloums do u have how mays rows you want then i can give you a Good solutionWaqar Ali– Waqar Ali2019年09月04日 06:42:18 +00:00Commented Sep 4, 2019 at 6:42
-
default