我在管理区域的产品网格中添加了一个自定义属性,使用函数_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');
我认为这很简单,但我现在还没有抓住它,非常感谢任何帮助!
修改
使用过滤器进行搜索时 - 如果过滤器是“名称”列,则列的值将填充值除外。
答案 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;
}