我正在尝试在Magento Admin订单网格中创建过滤器。我创建了一个扩展Mage_Adminhtml_Block_Widget_Grid的新类。我使用real_order_id列和filter_condition_callback来调用一个函数,用于将输入分隔为","。
问题在于,如果我尝试过滤超过12个项目,则会失败(返回主页)。不到12个就好了。我想过滤更多的id。有没有人有任何建议?
这一部分是: 受保护的函数_prepareColumns() {
$this->addColumn('real_order_id', array(
'header'=> Mage::helper('sales')->__('Order #'),
'width' => '80px',
'type' => 'text',
'index' => 'increment_id',
'filter_condition_callback' => array($this, 'separatedFilter')
));
这里是单独的功能
protected function separatedFilter($collection, $column)
{
if (!$value = $column->getFilter()->getValue()) {
return $this;
} else if(strpos($column->getFilter()->getValue(), ',') !== false) {
//explode by comma, getting array of IDs
$val = explode(",", $value);
//filter the collection, where collection index (order_id) is present in $val array
$this->getCollection()->addAttributeToFilter($column->getData('index'), array('in' => $val));
} else {
//else use default grid filter functionality (like $value input)
$this->getCollection()->addAttributeToFilter($column->getData('index'), array('like' => '%'.$value.'%'));
}
return $this;
}