Magento Grid过滤所有没有值的条目

时间:2015-09-08 13:48:59

标签: php magento grid adminhtml

我正在为子帐户设置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),一切正常。 问题是,如果我想显示所有父帐户,我会得到一个空集合。是否无法过滤没有设置属性的项目?

0 个答案:

没有答案