产品网格列过滤器不在magento中工作

时间:2013-01-31 07:28:32

标签: magento count configurable

我将在网格中仅显示可配置的产品。并添加了一列以显示此产品下的简单可配置产品的数量。为此,我这样写了。它工作正常。显示可在列中配置的简单产品数量。但如何将列过滤器应用于此。它不起作用。这是我的查询

$collection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToFilter('type_id', array('eq' => 'configurable'))
        ->addAttributeToSelect('sku')
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('attribute_set_id')
        ->addAttributeToSelect('type_id');
        $collection->getSelect()
            ->joinLeft(
             array('a'=>'catalog_product_super_link'),
                    'a.parent_id = e.entity_id',
       array('assoc_count'=>'count(a.parent_id)'))->group('e.entity_id');

在此处显示列

    $this->addColumn('assoc_count',array(
            'header'=> Mage::helper('catalog')->__('Count SimplePro'),
            'width' => '80px',
            'index' => 'assoc_count',
    ));

1 个答案:

答案 0 :(得分:1)

尝试使用filter_condition_callback

$this->addColumn('assoc_count',array(
        'header'=> Mage::helper('catalog')->__('Count SimplePro'),
        'width' => '80px',
        'index' => 'assoc_count',
        'filter_condition_callback' => array($this, 'assocFilterCallback'),
));

protected function assocFilterCallback($collection, $column) {
    $val = $column->getFilter()->getValue();
    if (is_null(@$val))
        return;
    $collection->getSelect()->having('assoc_count=?', $val);
}

可能是代码应该重建,但我认为你理解这个想法。