137 lines
3.7 KiB
PHP
137 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace Wowow\Devis\Ui\DataProvider;
|
|
|
|
use Magento\Ui\DataProvider\AbstractDataProvider;
|
|
use Wowow\Devis\Model\ResourceModel\ItemDevis\Collection;
|
|
use Magento\Framework\App\RequestInterface;
|
|
|
|
|
|
class ItemDevisDataProvider extends AbstractDataProvider
|
|
{
|
|
/**
|
|
* @var RequestInterface
|
|
*/
|
|
protected $request;
|
|
|
|
/**
|
|
* foobar collection
|
|
*
|
|
* @var \[Namespace]\[Module]\Model\FooBar\Collection
|
|
*/
|
|
protected $collection;
|
|
|
|
/**
|
|
* @var \Magento\Ui\DataProvider\AddFieldToCollectionInterface[]
|
|
*/
|
|
protected $addFieldStrategies;
|
|
|
|
/**
|
|
* @var \Magento\Ui\DataProvider\AddFilterToCollectionInterface[]
|
|
*/
|
|
protected $addFilterStrategies;
|
|
|
|
/**
|
|
* Construct
|
|
*
|
|
* @param string $name
|
|
* @param string $primaryFieldName
|
|
* @param string $requestFieldName
|
|
* @param CollectionFactory $collectionFactory
|
|
* @param array $meta
|
|
* @param array $data
|
|
*/
|
|
public function __construct(
|
|
$name,
|
|
$primaryFieldName,
|
|
$requestFieldName,
|
|
Collection $collectionFactory,
|
|
RequestInterface $request,
|
|
array $addFieldStrategies = [],
|
|
array $addFilterStrategies = [],
|
|
array $meta = [],
|
|
array $data = []
|
|
) {
|
|
$this->request = $request;
|
|
//var_dump($this->request->getParams());die();
|
|
parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
|
|
//var_dump($collectionFactory);die();
|
|
$this->collection = $collectionFactory;//->addFieldToFilter('entity_id',$this->request->getParam('id'));//->create();
|
|
$this->addFieldStrategies = $addFieldStrategies;
|
|
$this->addFilterStrategies = $addFilterStrategies;
|
|
}
|
|
|
|
/**
|
|
* Get collection
|
|
*
|
|
* @return \[Namespace]\[Module]\Model\FooBar\Collection
|
|
*/
|
|
public function getCollection()
|
|
{
|
|
$collection = $this->collection;
|
|
return $this->addCollectionFilters($collection);
|
|
|
|
}
|
|
|
|
protected function addCollectionFilters(Collection $collection)
|
|
{
|
|
/*foreach($collection as $item){
|
|
var_dump($item);
|
|
}die();*/
|
|
//var_dump($collection);die();
|
|
//$collection = $collection->create();
|
|
return $collection;//->addFieldToFilter('devis_id',$this->request->getParam('id'));
|
|
}
|
|
|
|
/**
|
|
* Get data
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getData()
|
|
{
|
|
if (!$this->getCollection()->isLoaded()) {
|
|
$this->getCollection()->load();
|
|
}
|
|
//var_dump($this->getCollection()->toArray());die();
|
|
$items = $this->getCollection()->toArray();
|
|
return [
|
|
'totalRecords' => $this->getCollection()->getSize(),
|
|
'items' => array_values($items),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Add field to select
|
|
*
|
|
* @param string|array $field
|
|
* @param string|null $alias
|
|
* @return void
|
|
*/
|
|
public function addField($field, $alias = null)
|
|
{
|
|
if (isset($this->addFieldStrategies[$field])) {
|
|
$this->addFieldStrategies[$field]->addField($this->getCollection(), $field, $alias);
|
|
} else {
|
|
parent::addField($field, $alias);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function addFilter(\Magento\Framework\Api\Filter $filter)
|
|
{
|
|
if (isset($this->addFilterStrategies[$filter->getField()])) {
|
|
$this->addFilterStrategies[$filter->getField()]
|
|
->addFilter(
|
|
$this->getCollection(),
|
|
$filter->getField(),
|
|
[$filter->getConditionType() => $filter->getValue()]
|
|
);
|
|
} else {
|
|
parent::addFilter($filter);
|
|
}
|
|
}
|
|
|
|
} |