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