I created my own collection with custom data. This is part from my grid class:
my grid class extends Mage_Adminhtml_Block_Widget_Grid
...
$this->setCollection($collection);
array_walk($data['data'], function($order) use (&$collection) {
$collection->addItem(new Varien_Object([
'store_id' => $order['store_reference'],
'shipping_date' => $order['shipping_date'],
'order_reference' => $order['order_reference'],
'customer_reference' => $order['customer_reference'],
'updated_at' => $order['updated_at'],
'shipping_fullname' => "{$order['shipping_firstname']} {$order['shipping_middlename']} {$order['shipping_lastname']}",
]));
});
$collection->setCurPage($page);
$collection->setLastPageNumber($lastPage);
$collection->setSize($lastPage * $limit);
$this->setCollection($collection);
return $this;
where $collection
is an instance of class which extends Varien_Data_Collection
. The content of that class is:
protected $hardSetSize = 1;
protected $setLastPageNumber = 1;
/**
* @param int $size
*/
public function setSize(int $size)
{
$this->hardSetSize = $size;
}
/**
* Retrieve collection all items count
*
* @return int
*/
public function getSize()
{
return $this->hardSetSize;
}
public function setLastPageNumber(int $lastPage)
{
$this->setLastPageNumber = $lastPage;
}
public function getLastPageNumber()
{
return $this->setLastPageNumber;
}
My grid is displayed, I got my custom data. But there is filtering problem. I created my column like:
$this->addColumn('store_id', [
'header' => Mage::helper('ffm_fulfillment')->__('Store'),
'align' => 'left',
'index' => 'store_id',
'renderer' => 'Mynamespace_Mymodule_Block_Adminhtml_Test_Grid_Renderer_Store',
'filter_condition_callback' => [$this, '_storeFilter'],
]);
I got the render data, which are store ids from 1-20. I want to filter them. I created my _storeFilter
function. What should I do next ? I put a message and the exit()
in my function and on filtering I do not get my message.
protected function _storeFilter($collection, $column)
{
$value = $column->getFilter()->getValue();
echo 'Test'; exit();
}