0

構成可能な製品のみをグリッドに表示します。この製品の下に単純な構成可能な製品の数を表示する列を 1 つ追加しました。このために、私はこのように書きました。それは正常に動作しています。構成可能な単純な製品の数を列に表示します。しかし、これに列フィルターを適用する方法。動作していません。ここに私の質問があります

$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',
    ));
4

1 に答える 1

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);
}

コードを再構築する必要があるかもしれませんが、その考えは理解していると思います。

于 2013-01-31T07:41:08.250 に答える