Magento产品网格过滤器具有自定义属性

时间:2013-12-11 03:18:07

标签: php magento filter grid admin

我在管理区域的产品网格中添加了一个自定义属性,使用函数_prepareColumns()下的/app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php中的以下代码

它运行正常,但现在使用任何搜索过滤器进行搜索时,新属性列没有显示任何值。

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','custom_column');
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attributeData = $attribute->getData();
$frontEndLabel = $attributeData['frontend_label'];
$attributeOptions = $attribute->getSource()->getAllOptions();

$attributeOptions2 = array();
foreach ($attributeOptions as $value) {
    if(!empty($value['value'])) {
        $attributeOptions2[$value['value']] = $value['label'];
    }
}

$this->addColumn('custom_column',
    array(
        'header'=> Mage::helper('catalog')->__('Custom Column'),
        'width' => '150px',
        'index' => 'custom_column',
        'type'  => 'options',
        'options' => $attributeOptions2,
));

在_prepareCollection()下我添加了以下代码:

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('custom_column');

我认为这很简单,但我现在还没有抓住它,非常感谢任何帮助!

修改

使用过滤器进行搜索时 - 如果过滤器是“名称”列,则列的值将填充值除外。

2 个答案:

答案 0 :(得分:2)

我必须将以下内容添加到_prepareCollection

        $collection->joinAttribute(
            'custom_column',
            'catalog_product/custom_column',
            'entity_id',
            null,
            'inner',
            $store->getId()
        );

答案 1 :(得分:0)

尝试添加自定义过滤器回调

$this->addColumn('custom_column',
  array(
    'header'=> Mage::helper('catalog')->__('Custom Column'),
    'width' => '150px',
    'index' => 'custom_column',
    'type'  => 'options',
    'options' => $attributeOptions2,
    'filter_condition_callback' => array($this, 'filter_custom_column_callback'),
));

并在那里定义您的过滤器查询,如下例所示:

protected function filter_custom_column_callback($collection, $column)
{
    $filterValue = $column->getFilter()->getValue();
    $collection->getSelect()->where(" ... ");
    return $this;
}