Magento Grid Фильтровать все записи без значения

Я работаю над настройкой Magento для Субсчетов.

У каждого клиента есть поле «parent_customer». Если поле установлено, учетная запись является субаккаунтом.

То, что я пытаюсь сделать, это добавить простой фильтр к обзору Grid, чтобы я мог показывать только родительские учетные записи только для вспомогательных учетных записей.

в переопределенном файле 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), все работает нормально.
Проблема в том, что если я хочу показать все родительские учетные записи, я получаю пустую коллекцию. Нет ли способа отфильтровать элементы, для которых не установлен атрибут?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …