我正在为子帐户设置Magento设置。
每个客户都有字段" parent_customer"。如果设置了该字段,则该帐户是子帐户。
我尝试做的是在网格概述中添加一个简单的过滤器,这样我只能显示子帐户的父帐户。
在重写的Grid.php文件中,我将以下代码段放入_prepareColumns()方法中:
$this->addColumn('parent_customer', array(
'header' => Mage::helper('customer')->__('Subaccount'),
'width' => '10',
'type' => 'options',
'options' => array('0'=>'Nein', '1' => 'Ja'),
'index' => 'parent_customer',
'filter_condition_callback' => array($this, '_callbackParentCustomer'),
));
并且还添加了一个新的回调方法
protected function _callbackParentCustomer($collection, $column){
$value = $column->getFilter()->getValue();
if ($value === null) { //here check if filter is not null
return $this;
}
/**
* Here you can add filter to collection
* or do other manipulations with collection.
* As example you can check filter value and filter collection.
*/
if ($value != 0) {
Mage::log('show subaccounts', null, 'product.log', true);
$collection->addFieldToFilter('parent_customer', array('gt' => 0));
}else{
Mage::log('hide subaccounts', null, 'product.log', true);
$collection->addFieldToFilter('parent_customer', array('eq' => ''));
}
return $this;
}
日志显示,两个过滤器都会触发。如果我只想显示子帐户(' gt' => 0),一切正常。 问题是,如果我想显示所有父帐户,我会得到一个空集合。是否无法过滤没有设置属性的项目?